1. 安装 xlwings
pip install xlwings
2. 导入模块
import xlwings as xw
3. 启动 Excel 应用
app = xw.App(visible=True)
4. 新建工作簿
wb = app.books.add()
5. 获取第一个工作表
sheet = wb.sheets[0]
6. 按名称获取工作表
sheet = wb.sheets['Sheet1']
7. 向单元格写入字符串
sheet.range('A1').value = 'Hello'
8. 向单元格写入数字
sheet.range('A2').value = 123
9. 读取单元格值
value = sheet.range('A1').value
10. 写入一行数据
sheet.range('A3:C3').value = ['A', 'B', 'C']
11. 写入一列数据
sheet.range('B1:B3').value = [1, 2, 3]
12. 写入二维表格数据
sheet.range('A5:C7').value = [
['姓名', '年龄', '城市'],
['张三', 28, '上海'],
['李四', 32, '北京']
]
13. 读取区域数据
data = sheet.range('A5:C7').value
14. 打开已有 Excel 文件
wb = app.books.open(r'C:\test\data.xlsx')
15. 新增工作表
wb.sheets.add('新Sheet')
16. 删除工作表
wb.sheets['新Sheet'].delete()
17. 合并单元格
sheet.range('A10:C10').merge()
18. 写入公式
sheet.range('C2').formula = '=A2+B2'
19. 保存工作簿
wb.save(r'C:\test\output.xlsx')
20. 关闭 Excel 并释放资源
wb.close()
app.quit()
21. 后台启动 Excel(不显示窗口)
app = xw.App(visible=False)
22. 连接当前已打开的 Excel 实例
app = xw.apps.active
23. 获取当前激活的工作簿
wb = app.books.active
24. 获取当前激活的工作表
sheet = wb.sheets.active
25. 通过索引获取单元格
cell = sheet.cells(1, 1) # 等价于 A1
cell.value = 'Index Cell'
26. 清空单元格内容(不影响格式)
sheet.range('A1').clear_contents()
27. 清空单元格(包含格式)
sheet.range('A1').clear()
28. 设置单元格背景色
sheet.range('A2').color = (255, 255, 0)
29. 设置字体为粗体
sheet.range('A3').api.Font.Bold = True
30. 设置字体大小
sheet.range('A3').api.Font.Size = 16
31. 设置数字格式
sheet.range('A4').value = 1234.567
sheet.range('A4').number_format = '#,##0.00'
32. 设置日期格式
sheet.range('A5').value = '2025-01-01'
sheet.range('A5').number_format = 'yyyy-mm-dd'
33. 自动调整列宽
sheet.range('A:A').autofit()
34. 自动调整行高
sheet.range('1:1').autofit()
35. 获取单元格地址
addr = sheet.range('B2').address
36. 判断单元格是否为空
is_empty = sheet.range('C1').value is None
37. 获取单元格所在行号和列号
cell = sheet.range('D4')
row = cell.row
col = cell.column
38. 复制单元格内容
sheet.range('A1').copy(sheet.range('B1'))
39. 获取当前选中区域
selection = app.selection
40. 判断工作簿是否已保存
is_saved = wb.saved
41. 隐藏工作表
sheet.api.Visible = False
42. 显示隐藏工作表
sheet.api.Visible = True
43. 重命名工作表
sheet.name = '重命名Sheet'
44. 获取工作簿所有工作表名称
names = [s.name for s in wb.sheets]
45. 激活某个工作表
wb.sheets['Sheet1'].activate()
46. 设置水平对齐方式
sheet.range('A1').api.HorizontalAlignment = -4108 # 居中
47. 设置垂直对齐方式
sheet.range('A1').api.VerticalAlignment = -4108 # 居中
48. 文本自动换行
sheet.range('A2').api.WrapText = True
49. 添加批注(注释)
sheet.range('B2').api.AddComment('这是批注')
50. 删除批注
sheet.range('B2').api.Comment.Delete()
51. 设置列宽自动适应内容
sheet.range('A:C').autofit()
52. 设置行高自动适应内容
sheet.range('1:10').autofit()
53. 插入行
sheet.range('2:2').api.Insert()
54. 删除行
sheet.range('2:2').api.Delete()
55. 插入列
sheet.range('B:B').api.Insert()
56. 删除列
sheet.range('B:B').api.Delete()
57. 设置边框
rng = sheet.range('A1:C3')
for i in range(7, 13):
rng.api.Borders(i).LineStyle = 1
58. 设置单元格斜体
sheet.range('A1').api.Font.Italic = True
59. 设置单元格下划线
sheet.range('A1').api.Font.Underline = True
60. 批量设置颜色
sheet.range('A1:C3').color = (200, 255, 200)
61. 获取单元格字体颜色
color = sheet.range('A1').api.Font.Color
62. 设置单元格字体颜色
sheet.range('A1').api.Font.Color = 0x0000FF # 蓝色
63. 设置单元格斜体 + 粗体组合
cell = sheet.range('A1')
cell.api.Font.Bold = True
cell.api.Font.Italic = True
64. 读取单元格公式
formula = sheet.range('C2').formula
65. 批量写入公式
sheet.range('D2:D5').formula = '=A2+B2'
66. 复制工作表
sheet.api.Copy(Before=wb.sheets[0].api)
67. 获取单元格合并区域
rng = sheet.range('A1:C1')
merge_area = rng.merge_area
68. 检查单元格是否合并
if sheet.range('A1').merge_cells:
print("已合并")
69. 打开多个工作簿并切换
wb1 = app.books.open(r'C:\test\file1.xlsx')
wb2 = app.books.open(r'C:\test\file2.xlsx')
wb2.activate()
70. 保存工作簿为新文件名
wb.save(r'C:\test\file_copy.xlsx')
71. 保存并覆盖原文件
wb.save()
72. 将工作簿另存为 XLSB 格式
wb.api.SaveAs(r'C:\test\file.xlsb', FileFormat=50)
73. 将工作簿另存为 XLSM 格式
wb.api.SaveAs(r'C:\test\file.xlsm', FileFormat=52)
74. 获取当前工作簿路径
path = wb.fullname
75. 获取当前工作簿名称
name = wb.name
76. 检查工作簿是否有宏
has_vba = wb.api.HasVBProject
77. 调用已有宏(无参数)
wb.macro('MyMacro')()
78. 调用宏并传参
wb.macro('MyMacroWithArgs')(2025, '测试')
79. 添加新的 VBA 模块
vb_module = wb.api.VBProject.VBComponents.Add(1) # 1 = 标准模块
vb_module.Name = 'NewModule'
80. 删除 VBA 模块
wb.api.VBProject.VBComponents.Remove(vb_module)
小结
- 本组涵盖 公式、合并单元格、工作簿管理、宏操作
- 与前 1–60 组合,可完成绝大部分 Excel 自动化场景
- xlwings 强大之处在于直接控制 Excel COM 对象,灵活性极高