凌辱人妻温泉-骆冰淫传 python中openpyxl库用法详解
你的位置:凌辱人妻温泉 > 91 免费视频 > 骆冰淫传 python中openpyxl库用法详解
骆冰淫传 python中openpyxl库用法详解
发布日期:2024-09-12 17:08     点击次数:119

骆冰淫传 python中openpyxl库用法详解

        openpyxl模块是一个读写Excel 文档的Python库骆冰淫传,openpyxl是一个比拟概述的器具,粗略同期读取和修改Excel文档。

openpyxl.load_workbook(地址) - 大开给定的文献名并复返 职责簿openpyxl.Workbook() - 新建一个 Workbook(职责簿)对象 ,即excel文献 一、读取数据

数据如下图所示:

图片骆冰淫传

示例代码:

import openpyxl# 大开给定的文献名并复返 职责簿data = openpyxl.load_workbook('data/体检表.xlsx')print(type(data))print(data)  # 复返一个 workbook 数据类型的值

运行效果:

图片

1.1 从职责簿中取得职责表 职责簿对象.sheetnames - 获妥当前职责簿中 总计表的名字职责簿对象.active - 获妥当前 行为表1 对应的Worksheet对象职责簿对象[表名] - 字据表名获得指定 表对象表对象.title - 获得表对象的 表名表对象.max_row - 获得表的 最大灵验行数表对象.max_column - 获得表的 最大灵验列数 

示例代码:

import openpyxl# 大开给定的文献名并复返 职责簿data = openpyxl.load_workbook('data/体检表.xlsx')print(type(data))print(data)  # 复返一个 workbook 数据类型的值# 获得总计表的表名sheets_names = data.sheetnamesprint(sheets_names)# 获得行为表对应的表对象(表对象即是Worksheet类的对象)active_sheet = data.activeprint(active_sheet)# 字据表名获得职责簿中指定的表sheet2 = data['Sheet2']print(sheet2)# 字据表对象获得表的名字sheet_name1 = active_sheet.titlesheet_name2 = sheet2.titleprint(sheet_name1, sheet_name2)# 获得第二列的总计本质sheet = data.activerow_num = sheet.max_row  # 获妥当前表中最大的行数for row in range(1, row_num+1):    cell = sheet.cell(row, 2)    print(cell.value)

运行效果:

图片

1.2 从表中取得单位格 表对象['列号行号'] - 获得指定列的指定行对应的单位格对象(单位格对象是 Cell 类的对象,列号是从A开动,行号是从1开动)表对象.cell(行号, 列号) - 获得指定行指定列对应的单位格(这儿的行号和列好号都不错用数字)表对象.iter_rows() - 一滑一滑的取表对象.iter_cols() - 列表一列的取单位格对象.value - 获得单位格中的本质单位格对象.row - 获得行号(数字1开动)单位格对象.column - 获得列号(数字1开动)单位格对象.coordinate - 获得位置(包括行号和列号) 

示例代码:

import openpyxl# 大开给定的文献名并复返 职责簿data = openpyxl.load_workbook('data/体检表.xlsx')print(type(data))print(data)  # 复返一个 workbook 数据类型的值# 获得活跃表对象sheet = data.active# 获得单位格对应的 Cell 对象a1 = sheet['A1']  # A1 默示A列中的第一滑,这儿的列号聘请的是从A开动的print(a1)# 获得单位格中的本质content = a1.valueprint(content)# 调用表的 cell()法式时,不错传入整数 算作 row 和 column 要道字参数,也不错得到一个单位格content2 = sheet.cell(2, 2).valueprint(content2)# 获得单位格的行和列信息row = a1.rowprint('行:', row)column = a1.columnprint('列:', column)coordinate = a1.coordinateprint(coordinate)print("*" * 100)# 获得第二列的总计本质row_num = sheet.max_row  # 获妥当前表中最大的行数for row in range(1, row_num+1):    cell = sheet.cell(row, 2)    print(cell.value)

运行效果:

图片

风雅:在 Z 列之后,列开动使用两个字母:AA、AB、AC 等。算作替代骆冰淫传,在调用表的 cell()法式时,不错传入整数 算作 row 和 column 要道字参数,也不错得到一个单位格。

风雅:第一滑或第一列的对应的整数 是 1,不是 0。

1.3 从表中取得行和列

        表对象也不错像列表或者字符串那样进行 切片 操作,来获得电子表格中一滑、一列或一个 矩形区域 中的总计 Cell 对象,然后就不错对数据进行相应的操作。

性吧, 表对象[位置1:位置2] - 获得指定鸿沟中的总计的单位格

示例代码:

import openpyxlfrom openpyxl.utils import get_column_letter# 大开给定的文献名并复返 职责簿data = openpyxl.load_workbook('data/体检表.xlsx')# print(type(data))# print(data)  # 复返一个 workbook 数据类型的值# 获得表对象sheet = data.active# 1.获得通盘一滑的单位格max_column = sheet.max_column  # 获得最大列数column = get_column_letter(max_column)  # 获得最大列数对应的字母列号# 获得第一滑总计单位格对象row2 = sheet['A1':'%s1' % column]  # ((<Cell '表1'.A1>, <Cell '表1'.B1>, <Cell '表1'.C1>),)print(row2)for row_cells in row2:    for cell in row_cells:        print(cell.coordinate, cell.value)print("*" * 100)# 2.获得通盘列的单位格max_row = sheet.max_rowcolumnB = sheet['B1':'B%d' % max_row]# 获得B列对应的总计单位格对象for column_cells in columnB:    for cell in column_cells:        print(cell.coordinate, cell.value)print("*" * 100)# 3. 获得矩形区域中的单位格对象cell_tuples = sheet['A1': 'C3']print(cell_tuples)for cells in cell_tuples:    for cell in cells:        print(cell.coordinate, cell.value)

运行效果:

图片

二、写入数据 2.1 创建Workbook对象来创建Excel文献并保存 openpyxl.Workbook() - 创建空的 Excel 文献对应的职责簿对象职责簿对象.save(文献旅途) - 保存文献职责簿对象.create_sheet(title, index) - 在指定职责簿中的指定位置(默许是临了)创建指命名字的表,况且复返表对象职责簿对象.remove(表对象) - 删除职责簿中的指定表表对象[位置] = 值 - 在表中指定位置对应的单位格中写入指定的值,位置是字符串:'A1’(第1列的第一滑)、'B1’(第二列的第一滑)

示例代码:

import openpyxl# 创建空的Workbook对象w_data = openpyxl.Workbook()# 获得总计表名print(w_data.sheetnames)  # ['Sheet']# 可知默许情况下,新建的Workbook对象对应的Excel 文献中唯有一张名字是 'Sheet' 的表# 获得行为表sheet_active = w_data.active# 修改表的名字sheet_active.title = 'first_table'# 保存至文献w_data.save(filename='data/info.xlsx')# 新建表w_data.create_sheet()w_data.create_sheet()# for i in range(20):#     wb.create_sheet()print(w_data.sheetnames)  # ['first_table', 'Sheet', 'Sheet1']# 新建表时,从Sheet开动一直到Sheet nw_data.create_sheet('second_table')# `职责簿对象.create_sheet(title, index)`  - 在指定职责簿中的指定位置(默许是临了)创建指命名字的表,况且复返表对象w_data.create_sheet('third_table', 1)print(w_data.sheetnames)  # ['first_table', 'third_table', 'Sheet', 'Sheet1', 'second_table']# 删除表w_data.remove(w_data['Sheet1'])w_data.save(filename='data/info.xlsx')# 写入数据w_data = openpyxl.load_workbook('data/info.xlsx')sheet = w_data['first_table']  # 获得表sheet['A1'] = '姓名'sheet['B1'] = '年事'sheet['C1'] = '性别'sheet['A2'] = '张三'sheet['B2'] = 25sheet['C2'] = '男'w_data.save('data/info.xlsx')

运行效果:

图片

图片

2.2 案例分析一 :爬取数据并保存excel中

示例代码:

# 期骗requests获得天行数据中疫情数据,况且将获得到的数据使用excel文献保存到表中。import requestsimport openpyxlfrom openpyxl.utils import get_column_letter# 1.获得数据url = 'http://api.tianapi.com/txapi/ncovabroad/index?key=c9d408fefd8ed4081a9079d0d6165d43'rep = requests.get(url)news_list = rep.json()['newslist']# 2.开导表头信息headers = {'continents': ('洲', 'A'),           'provinceName': ('国度', 'B'),           'currentConfirmedCount': ('现存确诊', 'C'),           'confirmedCount': ('累计确诊', 'D'),           'curedCount': ('休养', 'E'),           'deadCount': ('牺牲', 'F')}# 3.创建职责表wb = openpyxl.Workbook()sheet = wb.active# 4.写入数据# 先写入第一滑的表头column_num = 1for key in headers:    column = get_column_letter(column_num)    location = f'{column}1'    sheet[location] = headers[key][0]    column_num += 1# 再从第二行开动写入爬取到的数据row = 2for news in news_list:  # 遍历每条数据项,一个数据项对应一个字典    for key in news:  # 遍历数据键值        if key in headers:  # 保证键是表头中的某一项咱们需要的数据            location = f'{headers[key][1]}{row}'  # 存在表中的位置            value = news[key]  # 需要的数据            sheet[location] = value  # 写入    row += 1wb.save(filename='data/epidemic.xlsx')

运行效果:

图片

2.3 案例分析二: 操作单位格中本质神色并保存数据

示例代码:

import openpyxlfrom openpyxl.styles import Font, PatternFill, Border, Side, Alignment  # 字体、填充图案、边框、侧边、对皆花式# 1.大开职责簿data = openpyxl.load_workbook('data/体检表.xlsx')sheet = data.active# 2.开导单位格字体神色"""Font(    name=None,      # 字体名,不错用字体名字的字符串    strike=None,    # 删除线,True/False    color=None,     # 翰墨热诚    size=None,      # 字号    bold=None,      # 加粗, True/False    italic=None,    # 歪斜,Tue/False    underline=None  # 下划线, 'single', 'singleAccounting', 'double','doubleAccounting')"""# 创建字体对象,并革新适当的参数font1 = Font(    name='微软雅黑',    size=15,    italic=False,    color='ff0000',    bold=False,    strike=False,    underline='single',)# 开导指定单位格的字体# 单位格对象.font = 字体对象area = sheet['A1':'E1']for row in area:    for _ in row:        _.font = font1  # 革新字体# 3.开导单位格填充神色"""PatternFill(	fill_type=None,	# 开导填充神色: 'darkGrid', 'darkTrellis', 'darkHorizontal', 'darkGray', 'lightDown', 'lightGray', 'solid', 'lightGrid', 'gray125', 'lightHorizontal', 'lightTrellis', 'darkDown', 'mediumGray', 'gray0625', 'darkUp', 'darkVertical', 'lightVertical', 'lightUp'                    #              '深色网格“,”深色网格“,”深色水平“,”深色灰色“,”淡色向下“,”浅灰色“,”纯色“,”淡色网格“,”灰色125“,”淡色水平“,”淡色网格“,”深色向下“,”中灰色“,”灰色0625“,”深色进取“,”深色垂直“,”淡色垂直“,”淡色进取“	start_color=None# 开导填充热诚)"""# 开导填充对象fill = PatternFill(fill_type='solid', start_color='FFC0CB')# 开导单位格的填充神色# 单位格对象.fill = 填充对象area = sheet['A1':'E1']for row in area:    for _ in row:        _.fill = fill  # 革新填充体式# 4. 开导单位格对皆神色# 创建对象al = Alignment(    horizontal='right',  # 水平素向:center, left, right    vertical='top',  # 垂直处所: center, top, bottom)# 开导单位格的对皆花式sheet['B2'].alignment = al# 5. 开导边框神色# 开导边对象(四个边的边不错是相同的也不错不同,若是不同就创建对个Side对象)# border_style取值('dashDot','dashDotDot', 'dashed','dotted','double','hair', 'medium', 'mediumDashDot', 'mediumDashDotDot','mediumDashed', 'slantDashDot', 'thick', 'thin')#                  单点划线,双点划线,点划线,双划线,头发,中划线,单点中划线,双点中划线,中划线,斜划线,粗划线,细划线side = Side(border_style='thin', color='000000')# 开导边框对象# left、right、top、bottom默示的是边框的四个边,四个边不错使用一个边对象bd = Border(left=side, right=side, top=side, bottom=side)# 开导单位格的边框area = sheet['A1':'E1']for row in area:    for _ in row:        _.border = bd# 6.开导单位格的宽度和高度# 开导列宽sheet.column_dimensions['A'].width = 10# 开导行高sheet.row_dimensions[1].height = 30# 7. 保存data.save(filename='data/体检表2.xlsx')

图片

运行效果:

图片

2.4 案例分析三:将列表数据写入excel中

示例代码:

import openpyxlimport datetimedatas = [    ('学号', '姓名', '年事', '专科', '锻真金不怕火时分'),    ('B00001', '张1', 18, '语文', datetime.datetime(2019, 6, 18, 0, 0)),    ('B00002', '张2', 19, '数学', datetime.datetime(2019, 6, 19, 0, 0)),    ('B00003', '张3', 20, '英语', datetime.datetime(2019, 6, 20, 0, 0)),    ('B00004', '张4', 21, '物理', datetime.datetime(2019, 6, 21, 0, 0)),    ('B00005', '张5', 22, '化学', datetime.datetime(2019, 6, 22, 0, 0)),    ('B00006', '张6', 23, '生物', datetime.datetime(2019, 6, 23, 0, 0)),    ('B00007', '张7', 24, '历史', datetime.datetime(2019, 6, 24, 0, 0))]# 创建空的Workbook对象w_data = openpyxl.Workbook()# 获得行为表sheet = w_data.activefor i in range(1, len(datas) + 1):    for j in range(1, 6):        sheet.cell(row=i, column=j, value=datas[i - 1][j - 1])w_data.save('data/info.xlsx')

图片

运行效果:

图片

2.5 案例分析四:将列表数据写入excel中的多个sheet中,并开导标题行

示例代码:

import openpyxlimport datetimedatas = [    ('B00001', '张1', 18, '语文', datetime.datetime(2019, 6, 18, 0, 0)),    ('B00002', '张2', 19, '数学', datetime.datetime(2019, 6, 19, 0, 0)),    ('B00003', '张3', 20, '英语', datetime.datetime(2019, 6, 20, 0, 0)),    ('B00004', '张4', 21, '物理', datetime.datetime(2019, 6, 21, 0, 0)),    ('B00005', '张5', 22, '化学', datetime.datetime(2019, 6, 22, 0, 0)),    ('B00006', '张6', 23, '生物', datetime.datetime(2019, 6, 23, 0, 0)),    ('B00007', '张7', 24, '历史', datetime.datetime(2019, 6, 24, 0, 0))]# 创建空的Workbook对象w_data = openpyxl.Workbook()# 创建 sheet 对象sheet1 = w_data.activesheet1.title = 'Sheet1'sheet2 = w_data.create_sheet("Sheet2")sheet3 = w_data.create_sheet("Sheet3")# 添加标题行headers = ['学号', '姓名', '年事', '专科', '锻真金不怕火时分']sheet1.append(headers)sheet2.append(headers)sheet3.append(headers)# 风雅:添加了标题行,底下写入数据时,sheet.cell中的row要往下迁徙一滑,不然会障翳掉标题行# 将数据写入sheet1for i in range(1, len(datas) + 1):    for j in range(1, 6):        sheet1.cell(row=i + 1, column=j, value=datas[i - 1][j - 1])# 将数据写入sheet2for i in range(1, len(datas) + 1):    for j in range(1, 6):        sheet2.cell(row=i + 1, column=j, value=datas[i - 1][j - 1])# 将数据写入sheet3for i in range(1, len(datas) + 1):    for j in range(1, 6):        sheet3.cell(row=i + 1, column=j, value=datas[i - 1][j - 1])w_data.save('data/info.xlsx')

图片

运行效果:

图片

本站仅提供存储做事,总计本质均由用户发布,如发现存害或侵权本质,请点击举报。