python中文社区
各种数据需要导入Excel?多个Excel要合并?目前,Python处理Excel文件有很多库,openpyxl算是其中功能和性能做的比较好的一个。接下来我将为大家介绍各种Excel操作。
打开Excel文件
新建一个Excel文件
>>>fromopenpyxlimportWorkbook>>>wb=Workbook
打开现有Excel文件
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')
打开大文件时,根据需求使用只读或只写模式减少内存消耗。
wb=load_workbook(filename='large_file.xlsx',read_only=True)wb=Workbook(write_only=True)
获取、创建工作表
获取当前活动工作表:
>>>ws=wb.active
创建新的工作表:
>>>ws1=wb.create_sheet("Mysheet")#insertattheend(default)#or>>>ws2=wb.create_sheet("Mysheet",0)#insertatfirstposition#or>>>ws3=wb.create_sheet("Mysheet",-1)#insertatthepenultimateposition
使用工作表名字获取工作表:
>>>ws3=wb["NewTitle"]
获取所有的工作表名称:
>>>print(wb.sheetnames)['Sheet2','NewTitle','Sheet1']使用for循环遍历所有的工作表:>>>forsheetinwb:...print(sheet.title)
保存
保存到流中在网络中使用:
>>>fromtempfileimportNamedTemporaryFile>>>fromopenpyxlimportWorkbook>>>wb=Workbook>>>withNamedTemporaryFileastmp:wb.save(tmp.name)tmp.seek(0)stream=tmp.read保存到文件:>>>wb=Workbook>>>wb.save('balances.xlsx')保存为模板:>>>wb=load_workbook('document.xlsx')>>>wb.template=True>>>wb.save('document_template.xltx')
单元格
单元格位置作为工作表的键直接读取:
>>>c=ws['A4']
为单元格赋值:
>>>ws['A4']=4>>>c.value='hello,world'
多个单元格可以使用切片访问单元格区域:
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')0
使用数值格式:
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')1
使用公式:
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')2
合并单元格时,除左上角单元格外,所有单元格都将从工作表中删除:
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')3
行、列
可以单独指定行、列、或者行列的范围:
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')4
可以使用Worksheet.iter_rows方法遍历行:
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')5
同样的Worksheet.iter_cols方法将遍历列:
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')6
遍历文件的所有行或列,可以使用Worksheet.rows属性:
>>>ws=wb.active>>>ws['C9']='helloworld'>>>tuple(ws.rows)((<CellSheet.A1>,<CellSheet.B1>,<CellSheet.C1>),(<CellSheet.A2>,<CellSheet.B2>,<CellSheet.C2>),(<CellSheet.A3>,<CellSheet.B3>,<CellSheet.C3>),(<CellSheet.A4>,<CellSheet.B4>,<CellSheet.C4>),(<CellSheet.A5>,<CellSheet.B5>,<CellSheet.C5>),(<CellSheet.A6>,<CellSheet.B6>,<CellSheet.C6>),(<CellSheet.A7>,<CellSheet.B7>,<CellSheet.C7>),(<CellSheet.A8>,<CellSheet.B8>,<CellSheet.C8>),(<CellSheet.A9>,<CellSheet.B9>,<CellSheet.C9>))
或Worksheet.columns属性:
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')8
使用Worksheet.append或者迭代使用Worksheet.cell新增一行数据:
>>>fromopenpyxlimportload_workbook>>>wb2=load_workbook('test.xlsx')9
插入操作比较麻烦。可以使用Worksheet.insert_rows插入一行或几行:
wb=load_workbook(filename='large_file.xlsx',read_only=True)wb=Workbook(write_only=True)0
Worksheet.insert_cols操作类似。Worksheet.delete_rows和Worksheet.delete_cols用来批量删除行和列。
只读取值
使用Worksheet.values属性遍历工作表中的所有行,但只返回单元格值:
wb=load_workbook(filename='large_file.xlsx',read_only=True)wb=Workbook(write_only=True)1
Worksheet.iter_rows和Worksheet.iter_cols可以设置values_only参数来仅返回单元格的值:
wb=load_workbook(filename='large_file.xlsx',read_only=True)wb=Workbook(write_only=True)2