Python:使用Win32COM(或其他模块)调整Excel文件的打印属性



我需要打印一个excel表,需要使用某种python脚本进行操作。到目前为止,我已经在脚本中使用了Win32COM,并且还完成了使用以下代码进行打印输出的完成:

import win32com.client
o = win32com.client.Dispatch("Excel.Application")
o.Visible = 1
wb = o.Workbooks.Open(r'C:test.xlsx')
ws = wb.Worksheets[1]
ws.PrintOut()

不幸的是,在我实际打印excel表格之前,我需要调整此工作表/文件的打印设置:将格式更改为景观,然后更改为小/狭窄的保证金。

我找到了可能包含我需要的网站:https://msdn.microsoft.com/en-us/library/aa220363(v = Office.11).aspx

不幸的是,到目前为止,我无法更改所需的打印属性。我希望有人可以帮助我,或者至少让我朝着正确的方向前进。

您可以使用PagesEtup方法(https://learn.microsoft.com/en-us/previous/previous-versions/office/develice/developer/office-2003/aa173425%%2003/173425%;28V%3Doffice.11%29)。似乎没有像您在Excel应用程序中看到的那样狭窄/宽/正常的保证金设置,但是您可以自己指定保证金。

ws.PageSetup.Zoom = False
ws.PageSetup.FitToPagesTall = 1
ws.PageSetup.FitToPagesWide = 1
ws.PageSetup.PrintArea = print_area
ws.PageSetup.LeftMargin = 25
ws.PageSetup.RightMargin = 25
ws.PageSetup.TopMargin = 50
ws.PageSetup.BottomMargin = 50
wb.ExportAsFixedFormat(0, path_to_pdf)

我正在使用ExportasFixedFormat,但我想这也适用于printOut()。

参考:在excel文件中打印选定的工作表to python中的pdf

编辑:

fittopagestall(一页上的所有行都适合所有行),如果您将它们都设置为true,则fittopages wide(适合一个页面上的所有列)会弄乱您的最终打印区域。您将需要至少将其中一个指定为虚假,以查看您的保证金设置已生效。

ws.PageSetup.FitToPagesTall = False
ws.PageSetup.FitToPagesWide = 1

最新更新