Python 100天,从新手到大师——Python读写Excel文件(二):openpyxl高级应用(day25)
Python读写Excel文件(二):openpyxl高级应用开篇概述在上节课中,我们学习了使用xlrd和xlwt操作旧版.xls格式的Excel文件。今天,我们将转向更现代、功能更强大的openpyxl库,专门用于读写.xlsx格式的Excel文件。openpyxl不仅支持同时读写操作,还在样式设置、公式计算、图表生成等方面提供了更直观的API,是处理新版Excel文件的首选工具。通过今天的学习,你将掌握如何用openpyxl高效处理Excel文件,并学会插入图表、应用公式等高级功能,真正实现办公自动化。一、openpyxl简介与安装1.1 为什么选择openpyxl?openpyxl是一个专门用于读写Excel 2007及以上版本(.xlsx、.xlsm)文件的Python库。相比xlrd/xlwt,它具有以下优势:读写一体:无需切换库即可同时进行读写操作。功能全面:支持样式设置、公式计算、图表插入、数据验证等高级功能。兼容性好:完全支持.xlsx格式的所有特性,包括条件格式、数据透视表等。API友好:设计直观,与Excel操作逻辑高度一致。注意:openpyxl不支持Office 2007以前的.xls格式,如需处理旧版文件,请使用上节课介绍的xlrd/xlwt。1.2 安装openpyxl使用pip安装:pipinstallopenpyxl二、读取Excel文件假设我们有一个名为阿里巴巴2020年股票数据.xlsx的Excel文件,下面演示如何读取其内容。importdatetimeimportopenpyxl# 1. 加载工作簿wb=openpyxl.load_workbook('阿里巴巴2020年股票数据.xlsx')# 2. 获取所有工作表名称print("工作表名称:",wb.sheetnames)# 3. 获取第一个工作表sheet=wb.worksheets[0]# 也可以通过 wb['SheetName'] 指定名称# 4. 获取数据范围print("数据范围:",sheet.dimensions)# 如 A1:G255print(f"最大行数:{sheet.max_row}, 最大列数:{sheet.max_column}")# 5. 获取单元格值的多种方式cell_c3=sheet.cell(row=3,column=3)# 行、列索引从1开始print(f"C3单元格值:{cell_c3.value}")print(f"C3单元格值(坐标方式):{sheet['C3'].value}")print(f"G255单元格值:{sheet['G255'].value}")# 6. 获取多个单元格(返回嵌套元组)cells_range=sheet['A2:C5']# 获取A2到C5区域的所有单元格print("A2:C5区域:")forrowincells_range:forcellinrow:print(cell.value,end='\t')print()# 7. 读取整个工作表的数据print("\n所有数据:")forrowinsheet.iter_rows(min_row=2,max_row=sheet.max_row,min_col=1,max_col=sheet.max_column):forcellinrow:value=cell.value# 处理不同类型的数据ifisinstance(value,datetime.datetime):print(value.strftime('%Y年%m月%d日'),end='\t')elifisinstance(value,(int,float)):print(f'{value:.4f}',end='\t')else:print