xlwings 的使用

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 对象,灵活性极高
posted @ 2026-01-07 17:40  wellplayed  阅读(1)  评论(0)    收藏  举报