在实际工作中,使用 xlwings
可以实现批量数据处理、报表自动生成等功能。本文将介绍 xlwings 的简单使用例子。
环境配置
在 Windows 系统下使用 Python 3.7 进行 Excel 自动化,我们要做好环境配置,特别是处理好 pywin32
依赖。
Python 3.7 安装验证
打开命令提示符,输入以下命令:
python --version
解说:这个命令能验证系统是否已正确识别 Python 解释器。若输出的版本号是 3.7.x,就说明安装成功。
pywin32 依赖安装
pip install pywin32==224
解说:pywin32
是支持 Windows COM 接口的库,这里指定安装 224 版本,是因为它与 Python 3.7 兼容。
环境验证脚本
import win32com.client
print("PyWin32 库版本:", win32com.__version__)
解说:运行这个脚本,若能正常输出 PyWin32
库的版本号,就表明能正常导入核心模块,可避免后续操作报错。
Excel 对象模型解析
在使用 xlwings
操作 Excel 时,理解 Excel 对象模型至关重要。
对象层级关系
Application → Workbooks → Workbook → Worksheets → Worksheet → Range
Application
代表 Excel 应用程序本身;Workbooks
是工作簿集合;Workbook
是单个工作簿;Worksheets
是工作表集合;Worksheet
是单个工作表;Range
表示单元格区域。
核心对象演示
import xlwings as xw
app = xw.App() # 创建顶层应用对象
workbook = app.books.add() # 新建工作簿
worksheet = workbook.sheets[0] # 获取第一个工作表
使用 xlwings
的 App()
方法创建 Excel 应用程序对象;books.add()
用于新建一个工作簿;sheets[0]
可以获取工作簿中的第一个工作表。
对象属性访问
print("当前 Excel 版本:", app.version) # 输出类似 16.0 的值
print("工作表名称:", worksheet.name) # 显示 Sheet1
通过 app.version
能获取当前 Excel 的版本号;worksheet.name
可获取当前工作表的名称。
三种启动模式对比
xlwings
有三种启动 Excel 的模式,各有特点。
可视模式(默认)
import xlwings as xw
app = xw.App(visible=True)
设置 visible=True
会完整显示 Excel 界面,适合调试阶段,方便查看操作过程。
后台模式(推荐)
import xlwings as xw
app = xw.App(visible=False)
设置 visible=False
后,Excel 会无界面运行,能节省资源,适用于生产环境。
模板创建模式
import xlwings as xw
app = xw.App()
workbook = app.books.add(r'C:\template.xltx') # 基于模板创建
使用 books.add()
方法时传入模板文件的路径,就能基于模板创建工作簿,适合标准化文档生成。
模式选择指南表
模式 |
启动速度 |
资源占用 |
适用场景 |
---|---|---|---|
可视 |
慢 |
高 |
调试阶段 |
隐藏 |
快 |
低 |
生产环境 |
模板 |
中 |
中 |
标准化文档生成 |
首个自动化示例:读取 A1 单元格并写入 B2
import xlwings as xw
try:
# 启动 Excel 实例(隐藏模式)
app = xw.App(visible=False)
# 创建新工作簿
workbook = app.books.add()
worksheet = workbook.sheets[0]
# 写入 A1 单元格
worksheet.range('A1').value = '山海摸鱼人'
# 读取并处理数据
cell_value = worksheet.range('A1').value
worksheet.range('B2').value = f'处理后的: {cell_value}'
# 保存文件(注意路径转义)
workbook.save(r'C:\test_output.xlsx')
except Exception as e:
print(f"发生错误: {e}")
finally:
# 确保资源释放
workbook.close()
app.quit()
-
xw.App(visible=False)
:通过xlwings
连接 Excel 并以隐藏模式启动。 -
app.books.add()
:创建一个新的工作簿。 -
worksheet.range('A1').value
:用于读写单元格的值。 -
workbook.save(r'C:\test_output.xlsx')
:使用原始字符串处理路径,将工作簿保存到指定位置。 -
异常处理:捕获可能出现的异常并输出错误信息。
-
资源释放:关闭工作簿并退出 Excel 应用程序。