大蟒蛇python教程共享Python pywin32实现word与Excel的处理

pywin32处理word和excel的一些事

我们知道python处理word和excel的可以借助第三库python-docx、xlrd、xlwt和openpyxl等实现,但这些模块只支持基本的读写操作,如果要实现一些较为深入功能,就要看模块是否有相应功能支持了。
例如将word和excel转为pdf,在word和excel里面执行vba实现特殊功能,在excel里面生成数据透视表、设置excel的页面设置等等。
除了使用上述模块之外,还可以直接使用pywin32实现word和excel的操作,其底层原理是通过win32com实现操作,不过pywin32目前只能在windows上运行,对linux和macos不太友好,并且电脑必须安装wps或微软office,这也是pywin32的一些局限。

pywin32将word转pdf

pywin32处理word大多数用于格式转换,因为一般读写操作都可以借助python-docx实现,除非真的有特殊要求,但大部分企业对wrod操作不会有太多复杂需求。

废话不多说,直接上代码:

pythoncom.coinitialize()  file_path = 'xxxx'  try:  	word = wc.gencache.ensuredispatch('word.application')  except:  	try:  		word = wc.gencache.ensuredispatch('kwps.application')  # 如果使用wps  	except:  		word = wc.gencache.ensuredispatch('wps.application')  # 如果使用wps  newpdf = word.documents.open(file_path)  word.visible = 0  newpdf.saveas(f'xxxx.pdf', fileformat=17)  newpdf.close()  pythoncom.couninitialize()

使用pywin32创建word对象可以使用微软excel(word.application)或wps实现(kwps.application或wps.application),wps的kwps和wps主要是wps版本不同导致的,这个要看电脑安装是那个版本的wps。
使用win32com调用com组件的时候,需要用pythoncom.coinitialize初始化一下,最后还需要用pythoncom.couninitialize释放资源。

pywin32将excel格式处理并转pdf

由于pywin32处理excel没有相应官方文档说明,也没有相应源码,那怎办?实际上,官方文档在微软官方文档有说明的,打开微软官方文档可以发现,文档是以vba为主,换句话说,我们需要将vba代码转换为python代码。
如果不太熟悉vba代码,可以打开excel录制宏代码,录制过程中将用户操作excel转换为vba代码,

如图所示:

Python pywin32实现word与Excel的处理

关于excel设置开发者工具,如何录制vba代码这个自行百度一下了。
然后从vba代码在官方文档找到对应属性,比如vba代码的pagesetup是excel的页面设置,在官方文档找到pagesetup相关属性方法,

按照上述,vba转换对应python如下:

from win32com import client as wc    try:      excel = wc.dispatchex('excel.application')  except:      try:          excel = wc.dispatchex('ket.application')      except:          excel = wc.dispatchex('et.application')  newpdf = excel.workbooks.open(r'c:usersadministratordesktopttabc.xls')  excel.displayalerts = 0  # 获取第一个sheet  all_sheets = [sheet.name for sheet in newpdf.sheets]  ws_source = newpdf.worksheets(all_sheets[0])  # 设置页面设置  ws_source.pagesetup.leftheader = ""  ws_source.pagesetup.centerheader = ""  ws_source.pagesetup.rightheader = ""  ws_source.pagesetup.leftfooter = ""  ws_source.pagesetup.centerfooter = ""  ws_source.pagesetup.rightfooter = ""  # ws_source.pagesetup.fittopagestall = 0  ws_source.pagesetup.firstpagenumber = true  ws_source.pagesetup.leftmargin = 0  ws_source.pagesetup.rightmargin = 0  ws_source.pagesetup.topmargin = 0  ws_source.pagesetup.bottommargin = 0  ws_source.pagesetup.headermargin = 0  ws_source.pagesetup.footermargin = 0  # ws_source.pagesetup.papersize = 1  ws_source.pagesetup.orientation = 2  # 横向转换pdf  ws_source.pagesetup.fittopageswide = 1  # 所有列压缩在一页纸  ws_source.pagesetup.fittopagestall = false  ws_source.pagesetup.zoom = false  # 所有列压缩在一页纸  ws_source.pagesetup.centervertically = true  ws_source.pagesetup.centerhorizontally = true  ws_source.pagesetup.draft = false  ws_source.select()  # 行列自动调整  # ws_source.columns.autofit()  # ws_source.rows.autofit()  # 设置excel的边框  rows = ws_source.usedrange.rows.count  cols = ws_source.usedrange.columns.count  ws_source.range(ws_source.cells(1, 1), ws_source.cells(rows, cols)).borders.linestyle = 1  ws_source.range(ws_source.cells(1, 1), ws_source.cells(rows, cols)).borders.tintandshade = 0  ws_source.range(ws_source.cells(1, 1), ws_source.cells(rows, cols)).borders.weight = 1  # 转换为pdf文件  newpdf.exportasfixedformat(0, r'c:usersadministratordesktopttabc.pdf')  newpdf.close()  excel.quit()

从python代码看到,它与vba代码十分相似,也就是说,vba能实现的功能,python也能实现,说明了,编程语言只是工具,不管是什么工具,只要玩的溜就行了。

总结

从微软官方文档看到,vba还支持office所有软件,如access、outlook、ppt等等开发,那么python使用pywin32也能实现这些开发。不管如此,还可以实现windows其他功能开发,如自动打印功能使用win32print,这都是pywin32模块。

到此这篇关于python pywin32实现word与excel的处理的文章就介绍到这了,更多相关python word和excel处理内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多python教程分享Python pywin32实现word与Excel的处理,都可以关注python教程分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/pythontutorial/1209672.html

(0)
上一篇 2022年8月30日
下一篇 2022年8月30日

精彩推荐