技术标签: pywin32 python python excel 精彩技术文 python pywin32 Python运维开发 开发语言
本篇博客是 Python 操作 excel 系列的第5篇,前4篇博客阅读地址如下所示:
本篇咱们要学习的模块是 pywin32
,该模块主要封装了 Windows 系统的 Win32 API,可以用它操作 COM 对象和图形窗口界面。需要特别注意的是该模块无法应用到 Windows 外的系统。
模块安装非常简单,使用如下命令即可。
pip install pywin32
接下来直接进入Excel 操作环节,使用如下代码即可
import win32com.client
import 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.client
import 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)).Value
print(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,写作的 581 / 1024 篇。
可以关注我,点赞我、评论我、收藏我啦。
更多精彩
文章浏览阅读1.2k次。这是一个回答is it actually possible to somehow get the x and y values corresponding to the plot?我说“addressing”是因为不可能得到用来绘制曲线的x和{}值-因为曲线不是用二维点的序列绘制的……稍后将对此进行详细说明TL;DRpli = plot_implicit(...)series = pli[0]da..._python解隐函数方程
文章浏览阅读5k次。由于 Deep Learning 现在如火如荼的势头,在各种领域逐渐占据 state-of-the-art 的地位,上个学期在一门课的 project 中见识过了 deep learning 的效果,最近在做一个东西的时候模型上遇到一点瓶颈于是终于决定也来了解一下这个魔幻的领域。据说 Deep Learning 的 break through 大概可以从 Hinton 在 2006 年提出_deep learning和double-loop learning,organizational learning之间的关系
文章浏览阅读218次。相信绝大多数创新者都有跟我一样的经历——在最开始使用专利检索网站时,常常像用百度或谷歌一样直接输入某个关键词(如指纹识别,“FingerPrint”),然后一个猛子扎进去,一件一件地看起..._独个输入口或输出口登记器的作用
文章浏览阅读49次。一、下载(mysql-5.7.20-winx64.zip)https://dev.mysql.com/downloads/file/?id=473309不用注册也不用登录,直接下载就可以。二、解压 我直接放在了(虚拟机)D盘根目录,D:\mysql-5.7.20-winx64三、配置 1.解压后的文件夹里没有data文件夹和my.ini文件,需要手动新建一个my.ini文件,里...
文章浏览阅读807次。报错语句@Query(value = "select distinct(stockname) from tb_instock", nativeQuery = true)public List<Instock> getStocknames();原因是因为我从数据库中查询的数据字段只有 stockname, 没有Instock实体类中的其它字段,所以报错修改:由Instock实体类改成String@Query(value = "select distinct(stockname) fro_jpa自定义sql column 'update_date' not found.
文章浏览阅读2.8k次,点赞3次,收藏26次。在abaqus结果odb文件中提取整个表面的数据(如整个表面结点位移、应力应变、温度等)_abaqus 数据提取
文章浏览阅读585次。 &nbs_pwibwb
文章浏览阅读203次,点赞3次,收藏2次。Go语言的字符串是使用UTF-8编码的,UTF-8是Unicode的实现方式之一,因此可以直接在代码中使用中文,而不像python那样别扭。给我们国人开发带来很好的便利。Go语言中的原生字符串需要使用双引号("")或反引号(``)定义。单引号不能用来表示字符串,否则会报错:在GO语言中双引号:"", 用于单行字符串。如果需要用于多行字符串,需要使用反引号:``,此时反引号中的内部会原样解析。_golang rune遍历
文章浏览阅读9.2k次。Mac启动时,也会读取/etc/fstab的内容。首先确定Bootcamp分区的uuid:1. 在终端中运行 diskutil list 显示所有分区。2. 运行diskutil info disk0sX 显示bootcamp分区的uuid利用vifs命令修改fstab文件1.在终端中运行sudo vifs2. 加入UUID= your_uuid n_bootcamp 隐藏d盘
文章浏览阅读2k次。col_names:可以是FALSE、TRUE或者一个字符向量,默认是TRUE。参数设置为TRUE表示读取第一行作为列明,参数设置为字符向量,表示将字符向量作为数据集的列名字。使用readxl包,提供了高效读取Excel数据的方式。skip:一个数值,表示读取数据时跳过多少条数据。n_max:一个数值,表示最多读取多少条数据。使用haven包,用于读取其他统计软件的数据。使用R语言自带的iris数据集做演示。关于system.file。_r语言读取数据
文章浏览阅读148次。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。
文章浏览阅读861次。来源:CVPR2020原文:https://arxiv.org/abs/2003.06777v1.pdf代码:https://github.com/icoz69/DeepEMD 1.核心思想 本文提出一种基于推土机距离的度量学习的小样本学习算法(DeepEMD)。之前的基于度量学习的小样本学习算法通常是利用一个特征提取网络将支持集图像和查询集图像映射到一个特征空间,然后再设计或选择一种距离度量方式,来描述支持集图像和查询集图像之间的相似程度,并以此进行类别预测。而本文则是将图片拆分成多个图块,然后_few-shot image classification with differentiable earth mover鈥檚 distance an