20220807python学习
作者:互联网
本篇文章代码来自《Python编程快速上手——让繁琐工作自动化》
第13章:处理Excel表格
读取表格簿
openpyxl模块用于处理execel表格数据。
>>> import openpyxl >>> wb = openpyxl.load_workbook('example.xlsx') >>> type(wb) <class 'openpyxl.workbook.workbook.Workbook'>
openpyxl.load_workbook()函数接收文件名,并返回一个workbook数据类型的值。这个Workbook对象代表这个Execl文件。
要记住,example.xlsl必须在当前工作目录中。
取得表名称
使用sheetnames属性可以取得工作簿中所有表名的列表。
>>> import openpyxl >>> wb = openpyxl.load_workbook('example.xlsx') >>> wb.sheetnames ['Sheet1', 'Sheet2', 'Sheet3'] >>> sheet = wb['Sheet3'] >>> type(sheet) <class 'openpyxl.worksheet.worksheet.Worksheet'> >>> sheet.title 'Sheet3' >>> anotherSheet = wb.active >>> anotherSheet <Worksheet "Sheet1">
可使用Workbook对象的active属性来取得工作簿的活动表。在取得Worksheet对象后,可以通过title属性取得它的名称。
从表中取得单元格
有了Worhsheet对象后,就可以按名字访问Cell对象。
>>> import openpyxl >>> wb = openpyxl.load_workbook('example.xlsx') >>> sheet = wb['Sheet1'] >>> sheet['A1'].value '4/5/2015 1:34:02 PM' >>> c = sheet['B1'] >>> c.value 'Apples' >>> 'Row %s, Column %s is %s' % (c.row, c.column, c.value) 'Row 1, Column 2 is Apples' >>> 'Cell %s is %s' % (c.coordinate, c.value) 'Cell B1 is Apples' >>> sheet['C1'].value 73
Cell对象有一个value属性,它包含这个单元格中保存的值。Cell对象也有row、column和coordinate属性,额可以提供该单元格的位置信息。
>>> sheet.cell(row=1, column=2) <Cell 'Sheet1'.B1> >>> sheet.cell(row=1, column=2).value 'Apples' >>> for i in range(1, 8, 2): print(i, sheet.cell(row=i, column=2).value) 1 Apples 3 Pears 5 Apples 7 Strawberries
可以通过Worksheet对象的max_row和max_column属性来确定表的大小。
>>> import openpyxl >>> wb = openpyxl.load_workbook('example.xlsx') >>> sheet = wb['Sheet1'] >>> sheet.max_row 8 >>> sheet.max_column 4
请注意,max_column属性是一个整数,而不是Excel中出现的字母。
列字母和数字之间的转换
要从字母转换到数字,就调用openpyxl.utils.column_index_from_string()函数。
要从数字转换到字母,就调用openpyxl.utils.get_column_letter()函数。
>>> import openpyxl >>> from openpyxl.utils import get_column_letter, column_index_from_string >>> get_column_letter(1) 'A' >>> get_column_letter(900) 'AHP' >>> wb = openpyxl.load_workbook('example.xlsx') >>> sheet = wb['Sheet1'] >>> get_column_letter(sheet.max_column) 'D' >>> column_index_from_string('A') 1
从表中取得行和列
>>> import openpyxl >>> wb = openpyxl.load_workbook('example.xlsx') >>> sheet = wb['Sheet1'] >>> tuple(sheet['A1':'C3']) ((<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>), (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>), (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>)) >>> for rowOfCellObjects in sheet['A1':'C3']: ... for cellObj in rowOfCellObjects: ... print(cellObj.coordinate, cellObj.value) ... print('--- END OF ROW ---') A1 4/5/2015 1:34:02 PM B1 Apples C1 73 --- END OF ROW --- A2 4/5/2015 3:41:23 AM B2 Cherries C2 85 --- END OF ROW --- A3 4/6/2015 12:46:51 PM B3 Pears C3 14 --- END OF ROW ---
要访问特定行或列的单元格的值,也可以利用Worksheet对象的rows和columns属性。这些属性必须被list()函数转换成列表,才能使用方括号和索引。
>>> import openpyxl >>> wb = openpyxl.load_workbook('example.xlsx') >>> sheet = wb.active >>> list(sheet.columns)[1] (<Cell 'Sheet1'.B1>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.B5>, <Cell 'Sheet1'.B6>, <Cell 'Sheet1'.B7>, <Cell 'Sheet1'.B8>) >>> for cellObj in list(sheet.columns)[1]: ... print(cellObj.value) Apples Cherries Pears Oranges Apples Bananas Strawberries None
写入Excel文档
创建并保存Excel文档
调用openpyxl.Workbook()函数以创建一个新的空Workbook对象。
>>> import openpyxl >>> wb = openpyxl.Workbook() >>> wb.sheetnames ['Sheet'] >>> sheet = wb.active >>> sheet.title 'Sheet' >>> sheet.title = 'Spam Bacon Eggs Sheet' >>> wb.sheetnames ['Spam Bacon Eggs Sheet']
当修改Workbook对象或它的工作表和单元格时,电子表格文件不会保存,除非你调用save()工作簿方法。
>>> import openpyxl >>> wb = openpyxl.load_workbook('example.xlsx') >>> sheet = wb.active >>> sheet.title = 'Spam Spam Spam' >>> wb.save('example_copy.xlsx')
创建和删除工作表
利用create_sheet()方法和del操作符可以再工作簿中添加或删除工作表。
>>> import openpyxl >>> wb = openpyxl.Workbook() >>> wb.sheetnames ['Sheet'] >>> wb.create_sheet() <Worksheet "Sheet1"> >>> wb.sheetnames ['Sheet', 'Sheet1'] >>> wb.create_sheet(index=0, title='First Sheet') <Worksheet "First Sheet"> >>> wb.sheetnames ['First Sheet', 'Sheet', 'Sheet1'] >>> wb.create_sheet(index=2, title='Middle Sheet') <Worksheet "Middle Sheet"> >>> wb.sheetnames ['First Sheet', 'Sheet', 'Middle Sheet', 'Sheet1'] >>> del wb['Middle Sheet'] >>> del wb['Sheet1'] >>> wb.sheetnames ['First Sheet', 'Sheet']
将值写入单元格
>>> import openpyxl >>> wb = openpyxl.Workbook() >>> sheet = wb['Sheet'] >>> sheet['A1'] = 'Hello, world!' >>> sheet['A1'].value 'Hello, world!'
公式
公式以一个等号开始,可以配置单元格让它包含通过其他单元格计算得到的值。
>>> sheet['B9'] = '=SUM(B1:B8)'
调整行和列
合并和拆分单元格
利用merge_cells()工作表方法,可以将一个矩形区域中的单元格合并为一个单元格。
>>> import openpyxl >>> wb = openpyxl.Workbook() >>> sheet = wb.active >>> sheet.merge_cells('A1:D3') >>> sheet['A1'] = 'Twelve cells merged together' >>> sheet.merger_cell('C5:D5') >>> sheet['C5'] = 'Two merged cells' >>> wb.save('merged.xlsx')
merge_cells()的参数是一个字符串,表示要合并的矩形区域左上角和右下角的单元格:'A1:D3'将12个单元格合并为一个单元格。
要拆分单元格,就调用unmerge_cells()工作表方法。
>>> import openpyxl >>> wb = openpyxl.Workbook() >>> sheet = wb.active >>> sheet.unmerge_cells('A1:D3') >>> sheet.unmerger_cell('C5:D5') >>> wb.save('merged.xlsx')
图标
openpyxl支持利用工作表中单元格的数据来创建条形图、折线图、散点图和饼图。
标签:Sheet,openpyxl,column,单元格,学习,20220807python,sheet,wb 来源: https://www.cnblogs.com/ColoDu/p/16558943.html