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代码,
如图所示:
关于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