写点什么

python 使用 pywin32 模块操作 excel,Python 操作 excel 系列之五

作者:梦想橡皮擦
  • 2022 年 5 月 08 日
  • 本文字数:1785 字

    阅读完需:约 6 分钟

本篇博客是 Python 操作 excel 系列的第 5 篇,前 4 篇博客阅读地址如下所示:


本篇咱们要学习的模块是 pywin32 ,该模块主要封装了 Windows 系统的 Win32 API,可以用它操作 COM 对象和图形窗口界面。需要特别注意的是该模块无法应用到 Windows 外的系统。


模块安装非常简单,使用如下命令即可。


pip install pywin32
复制代码

操作 Excel 文件

接下来直接进入 Excel 操作环节,使用如下代码即可


import win32com.clientimport os
# 获取当前工作目录base_dir = os.path.dirname(os.path.abspath(__file__))# print(base_dir)xlsx_app = win32com.client.Dispatch('Excel.Application')# Excel 文件是否可见,可测试 True 或者 False 即可xlsx_app.Visible = True# 文件名filename = "测试.xlsx"# 得到完整的文件路径,注意这里必须使用绝对路径,不然会提示文件不存在path = os.path.join(base_dir, filename)# 打开上述名称的excel文件xlsx_book = xlsx_app.Workbooks.Open(path, ReadOnly=False)# 打开对应名称的sheet,确保 Sheet 在 Excel 中存在sht = xlsx_book.Worksheets('测试Sheet')# 对当前 Sheet 清除内容sht.UsedRange.ClearContents()
# 获取 sheet 工作区的行数nrows = sht.UsedRange.Rows.Count
print(nrows)
复制代码


上述代码包含非常多的信息,你可以配合注释进行学习。


例如通过 xlsx_app.Workbooks.Open() 打开一个只读的 excel 文件,然后调用返回对象的 Worksheets() 方法获取工作表,接下来就可以按照以前我们熟悉的流程对工作表进行操作了。

文件另存为

使用 xlsx_book .SaveAs(newfilename) 可以将 Excel 文件进行转存。



上述代码创建的文件不在 py 文件所在目录,这里还是会涉及目录问题,修改如下


# 还是要注意路径问题newpath = os.path.join(base_dir, '测试123.xlsx')
xlsx_book.SaveAs(newpath)
复制代码


这里再补充一个关闭文件的方法,代码如下所示,其中重要的方法是 Close() ,参数 SaveChanges 表示是否需要保存数据,0 不保存,1 保存。


sht.Cells(1, 1).Value = "Nice"xlsx_book.Close(SaveChanges=1)
复制代码

读取单元格数据


import win32com.clientimport os
# 获取当前工作目录base_dir = os.path.dirname(os.path.abspath(__file__))# print(base_dir)xlsx_app = win32com.client.Dispatch('Excel.Application')# Excel 文件是否可见,可测试 True 或者 False 即可xlsx_app.Visible = False
# 文件名filename = "测试.xlsx"# 得到完整的文件路径,注意这里必须使用绝对路径,不然会提示文件不存在path = os.path.join(base_dir, filename)# 打开上述名称的excel文件xlsx_book = xlsx_app.Workbooks.Open(path)
# 打开对应名称的sheet,确保 Sheet 在 Excel 中存在sht = xlsx_book.Worksheets('测试Sheet')
# 获取单元格数据data_a1 = sht.Cells(1, 1).Value
print(data_a1)
复制代码


其中 Cells(row, column) 方法中的参数对应的是行号和列号,并且下标是从 1 开始

设置单元格数据

上文是读取单元格数据,对其重新赋值也比较简单,执行下述代码即可


sht.Cells(1, 1).Value = "Nice"xlsx_book.Close(SaveChanges=1)
复制代码

选择区域数据

区域选择用到的方法是 Range()


data = sht.Range(sht.Cells(1, 1), sht.Cells(3, 3)).Valueprint(data)
复制代码


除此之外,你还可以参考下述代码进行操作


sht.Range("A1").Value = "测试A1"sht.Range("A2:B2").Value = "A2:B2"sht.Range("A3:B5,A4:B7").Value = "A3:B5,A4:B7"
复制代码


其它操作,例如数据删除,设置背景色

使用 EntireRow.Delete() 可以删除行数据,使用 EntireColumn.Delete() 删除列数据。


sht.Rows(2).EntireRow.Delete() # 删除第2行sht.Columns(2).EntireColumn.Delete() # 删除第2列
复制代码


设置背景颜色


sht.Cells(1,1).Interior.ColorIndex = 1
复制代码


这里的背景色是用数字索引实现的,一共有 56 色,其中特殊的 0 是无色,1 是黑色,2 是白色。


如果希望设置列宽,可以参考下述代码


# 设置列宽sht.Columns(1).ColumnWidth = 60
复制代码


设置字体


# 设置字体sht.Cells.Font.Name = "微软雅黑"
复制代码


更多资料可以参考下述内容:http://timgolden.me.uk/pywin32-docs/contents.html

记录时间

2022 年度 Flag,写作的 <font color=red>581</font> / 1024 篇。可以<font color=#04a9f4>关注</font>我,<font color=#04a9f4>点赞</font>我、<font color=#04a9f4>评论</font>我、<font color=#04a9f4>收藏</font>我啦。

发布于: 刚刚阅读数: 2
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
python使用 pywin32 模块操作 excel,Python 操作 excel 系列之五_5月月更_梦想橡皮擦_InfoQ写作社区