好好学习,天天向上

用python操纵Microsoft Office之Excel

工作中通常会需要操作大量的excel文档,例如,统计数据,生成新的表单等等。此时,使用python帮我们自动化汇总和整理计算可以省去很多时间。

windows下的COM编程可以使用pywin32这个模块。这样的话,我们就可以直接参考MSDN上Office相关的接口文档来使用了。由于网上已经有了大量的win32com的初步介绍,这里对其就不多加赘述。下面主要是如何结合MSDN的接口文档(Microsoft.Office.Interop.Excel)来操作Excel文档

首先,讲解一些基本概念。 1. Application是应用。就是当我们打开Microsoft Excel的时候看到的东西。 2. Workbook是工作簿。有了应用我们还什么都不能做,还需要创建一个工作簿。 3. Worksheet是工作表,然后Cells指的是工作表中的一格一格的地方。 总结一下,就是首先我们要有Application,然后在上面创建Workbook。一个Application可以有多个Workbook。有了Workbook后,基本操作是在Workbook上的不同Worksheet中的Cell进行的。

Excel基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 导入模块
import win32com
from win32com.client import *
# 新建一个基于COM对象的应用
xlApp = win32com.client.Dispatch("Excel.Application")
# 设置应用可见
xlApp.Visible = True
# 新增一个工作簿
xlBook = xlApp.Workbooks.Add()
# 保存并关闭工作簿
xlBook.SaveAs("E:\\text.xls")
xlBook.Close()
# 打开已有的应用
xlBook = xlApp.Workbooks.Open("E:\\text.xls")
# 不保存,直接退出
xlBook.Close(SaveChanges=0)
# 关闭应用
xlApp.Quit()

参考: * 应用:Application * 是否可见:Visible * 工作簿:Workbooks

WorkSheet基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 选择一个工作表
# 直接使用下标选择第index个工作表,第一个工作表是index=0
sht = xlBook.Worksheets[0]
# 也可以使用工作表名来选择工作表
# sht = xlBook.Worksheets("Sheet1")
# 操作单元格
# Cells(row, column), row和column都是从1开始的
# 设值
for i in xrange(1,4):
sht.Cells(i,1).Value = i
sht.Cells(i,2).Value = "Odd" if i%2 else "Even"
# 修改样式
# 设置字体
sht.Cells.Font.Name = "Calibri"
# 设置列宽
sht.Columns(1).Columnwidth = 60
# 设置背景颜色
sht.Cells(1,1).Interior.Color = 0xc7ed87
# 合并单元格
sht.Range(sht.Cells(4,1), sht.Cells(5,1)).Merge()

参考: * Worksheet * Worksheets * Cells * Columns * Range

其他

1
2
3
4
# 计算工作表页数(打印预览)
cnt = sht.PageSetup.Pages.Count
# 使用函数
result = xlApp.WorksheetFunction.CountIf(sht.Range("B:B"), "Odd")

参考: * PageSetup * Pages * WorksheetFunction

知道了怎么使用python操作excel,写好脚本,运行起来,你就可以起身喝杯水,等着看结果就好了♪(*)

请言小午吃个甜筒~~