操作Excel常用的Python库
点击上方 蓝字关注我吧!
在Python中,有多种库可以用来读写Excel文件,每种库都有其特点和适用场景。以下是一些推荐的Python库,用于Excel文件的读写操作。
-
pandas
pandas是一个非常强大的数据分析库,它提供了read_excel()函数来读取Excel文件,并返回一个DataFrame对象,方便后续的数据处理和分析。同样,pandas也提供了to_excel()函数将DataFrame对象写入Excel文件。pandas默认使用openpyxl或xlrd/xlwt作为Excel文件的读写引擎(取决于安装的库和文件类型)。
-
openpyxl
openpyxl是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它提供了完整的API来操作Excel文件,包括工作簿、工作表、单元格、图表等。openpyxl不依赖Microsoft Excel,可以在没有安装Excel的服务器上使用。
-
xlrd/xlwt
xlrd是一个用于读取Excel文件的库,支持xls和xlsx格式。xlwt是一个用于写入Excel文件的库,但仅支持xls格式(对于xlsx格式,需要使用xlsxwriter库)。
注意:xlrd库在较新版本中已经不再支持xlsx格式的读取,因此如果需要处理xlsx文件,建议使用openpyxl或pandas配合xlsxwriter库。
-
xlsxwriter
xlwings是一个用于与Excel交互的库,支持读写Excel文件,并可以与Excel VBA进行交互。它提供了一个方便的API来操作Excel文件,可以与matplotlib、numpy和pandas等库无缝集成。xlwings支持Windows和macOS平台,可以操作Excel或WPS电子表格软件。
-
pywin32(包含win32com)
pywin32是一个Python扩展模块,用于提供对Windows API的访问。其中的win32com模块可以用于与Excel进行交互,实现Excel文件的读写操作。
注意:win32com是Windows平台特有的,并且可能需要一些配置才能正常工作。
在选择库时,请根据具体需求和使用的操作系统进行选择。对于大多数数据分析和数据处理任务,pandas和openpyxl的组合是一个很好的选择。如果需要与Excel VBA进行交互或需要更高级的Excel特性支持,可以考虑使用xlwings。
有这么多操作Excel的Python库,该如何选择呢?
可以向GodeGeeX提问:你是一名Python办公自动化的专家,现在需要通过Python操作Excel,请推荐一个Python库,能实现的功能最全,并且可以处理复杂的Excel文件,你推荐哪一个库?如图所示,CodeGeeX推荐的是xlwings库。

xlwings库安装
使用pip命令可安装xlwings库,具体操作可以在VS Code的终端(terminal)中执行,如图所示,参考代码如下:
pip install xlwings

创建和保存Excel
首先,学习如何使用xlwings库创建和保存Excel。向CodeGeeX提问:如何在xlwings中创建和保存Excel?
CodeGeeX的反馈如下:可以使用以下Python代码来创建和保存Excel文件,将CodeGeeX反馈代码中的路径修改为本地实际路径。
import xlwings as xw
#创建一个新的工作簿
wb = xw.Book()
# 选择活动工作表
ws = wb.sheets.active
# 写入数据
ws.range('A1').value = 'HELLO'
ws.range('B1').value = 'WORLD'
# 保存工作簿
wb.save('example.xlsx')
# 关闭工作簿
wb.close()
运行成功后,在代码指定路径中生成了一个example1.xlsx文件,打开后如图所示。

读取和写入Excel
继续向CodeGeeX提问:读取刚才创建的Excel文件里的内容,并在一个区域写入内容。
CodeGeeX的反馈如下:要读取刚才创建的Excel文件里的内容,并在一个区域写入内容,你可以使用xlwings库的range()方法来选择单元格,并使用value属性来读取和写入数据。
import xlwings as xw
# 打开之前保存的工作簿
wb = xw.Book('E:\CODE\example.xlsx')
# 选择活动工作表
ws = wb.sheets.active
# 读取单元格A1和B1的值
cell_a1 = ws.range('A1').value
cell_b1 = ws.range('B1').value
# 打印读取的值
print(f'单元格A1的值是:{cell_a1}')
print(f'单元格B1的值是:{cell_b1}')
# 在A2:B2区域写入新内容
ws.range('A2:B2').value = ['NEW', 'CONTENT']
# 保存并关闭工作簿
wb.save()
wb.close()
运行后结果如图所示。

操作工作表
继续向CodeGeeX提问:新建一个名为“New Sheet”的工作表,并删除example1.xlsx的Sheet1工作表。
CodeGeeX的反馈如下:要新建一个名为“New Sheet”的工作表,并删除名为“Sheet1”的工作表,你可以使用xlwings库的add()方法和delete()方法。
import xlwings as xw
# 打开工作簿
wb = xw.Book('E:\CODE\example.xlsx')
# 添加一个新的工作表
ws = wb.sheets.add(name="New Sheet")
# 删除一个工作表
wb.sheets['Sheet1'].delete()
# 保存并关闭
wb.save()
wb.close()
运行结果如图所示。

公式与图表
继续向CodeGeeX提问:在“New Sheet”工作表中填入一些示例数据,编写计算公式并创建一个柱状图。
CodeGeeX的反馈如下:在“New Sheet”工作表中填入数据,并使用xlwings库写入公式和生成图表,可以通过选择单元格并设置value属性来填充数据,使用formula属性来输入公式,再通过创建图表并设置数据源来生成可视化效果。
import xlwings as xw
# 打开工作簿
wb = xw.Book('E:\CODE\example.xlsx')
ws = wb.sheets['New Sheet']
# 在工作表中添加数据
data = [
['姓名','年龄'],
['张三', 20],
['李四', 25],
['王五', 30],
['赵六', 35]
]
ws.range('A1').value = data
ws.range('C1').formula = '=SUM(B2:B5)'# 计算年龄总和
chart = ws.charts.add() #创建一个新图表
chart.set_source_data(ws.range('A1:B5')) #设置图表数据源
chart.chart_type = 'line'#设置图表类型为折线图
wb.save() # 保存工作簿
wb.close() # 关闭工作簿
运行结果如图所示:
下期更新:Excel批量转PDF:对外发送更友好
夜雨聆风