批量处理Excel文件的模块
Excel文件的Python模块有很多,如XlsxWriter、xlrd、xlwt、xlutils、openpyxl和xlwings等。
xlwings模块的功能是最齐全的。它不仅能读、写和修改两种格式的Excel文件(xls和xlsx),而且能批量处理多个Excel文件。xlwings模块还能与Excel VBA结合使用,实现更加强大的数据输入和分析功能。
操作流程:启动excel程序—>新建工作簿(包含多个sheet表,默认1个)—>打开工作簿—>新建工作表—>操作工作簿。
1.1 创建工作簿
import xlwings as xw # 导入xlwings模块并简写为xw
app = xw.App(visible = True, add_book = False) # 启动Excel程序窗口,但不新建工作簿
workbook = app.books.add() # 新建一个工作簿
1.2 保存工作簿
workbook.save('d:\\example.xlsx')
workbook.close() # 关闭工作簿
app.quit() # 退出Excel程序
1.3 打开工作簿
利用xlwings模块打开一个已有的工作簿,需要注意的是,指定的工作簿必须真实存在,并且不能处于已打开的状态。
import xlwings as xw
app = xw.App(visible = True, add_book = False)
workbook = app.books.open(r'd:\example.xlsx') # 打开D盘根文件夹下名为“example.xlsx”的工作簿
1.4 操控工作表和单元格
import xlwings as xw
app = xw.App(visible = False) # 启动excel程序但不新建工作簿
workbook = app.books.add() # 创建工作簿,默认产生1个sheet表,但不操作
worksheet = workbook.sheets.add('产品统计表') # 创建指定名称sheet表
worksheet.range('A1').value = '编号' # 指定单元格并赋值
workbook.save(r'./data/北京.xlsx') # 保存表
workbook.close() # 关闭工作簿
app.quit() # 关闭excel表程序
1.5 xlwings模块与pandas模块的交互
import xlwings as xw
import pandas as pd
app = xw.App(visible=False, add_book = False)
workbook = app.books.add()
worksheet = workbook.sheets.add('新工作表')
df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'])
worksheet.range('A1').value = df
workbook.save(r'./data/table.xlsx')
workbook.close()
app.quit()
1.6 xlwings模块与Matplotlib模块的交互
import xlwings as xw
import matplotlib.pyplot as plt
figure = plt.figure()
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
app = xw.App(visible=False)
workbook = app.books.add()
worksheet = workbook.sheets.add('新工作表')
# 将绘制的图表写入工作簿
# left用于设置图表与左侧边界的距离
# update设置为True,则在后续通过pictures.add()函数调用具有相同名称图表时,可以只更新图表数据而不更改其位置或大小。
worksheet.pictures.add(figure, name='图片1', update=True, left=200)
workbook.save(r'./data/table1.xlsx')
workbook.close()
app.quit()