打印 Excel 张单面 sided/single python

Printing Excel sheets one sided/single sided in python

我在 python 中编写了一个脚本,用于填充从 kivy 界面获取的 excel 表格中的某些单元格。它应该发送一封包含输入数据的电子邮件,并在 excel 表中填写一些数据。它可以正常工作,但最后一部分是自动打印纸张。:D 我遇到了一个脚本,它可以自动打印,唯一的问题是我不知道如何让它打印单面双面的。

我正在使用 openpyxl 来调整工作表中的数据,这个库有一些可以更改打印机设置的功能,比如边距,但我没有找到任何关于单面打印的信息。另外,我没有找到如何使用 openpyxl 进行打印,这就是我使用 win32com 的原因。

import os, win32com.client

o = win32com.client.Dispatch('Excel.Application')
o.visible = True
wb = o.Workbooks.Open(path)
ws = wb.Worksheets([1 ,2 ,3])
ws.PrintOut()

有谁知道如何将打印机输出更改为单面打印?

感谢您的时间和关注。

感谢@yoonghm 和他的 link 我找到了如何让它为我工作。

import win32api
import win32print
import win32com.client
from win32com.shell import shellcon, shell


o = win32com.client.Dispatch('Excel.Application')
o.visible = False
wb = o.Workbooks.Open(file_path)
printlist = [i+1 for i in sheetlist[:printamount]]
ws = wb.Worksheets(printlist)

#set to single sided
name = win32print.GetDefaultPrinter()
printdefaults = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS}
handle = win32print.OpenPrinter(name, printdefaults)
level = 8
attributes = win32print.GetPrinter(handle, level)
attributes['pDevMode'].Duplex = 1
win32print.SetPrinter(handle, level, attributes, 0)
win32print.GetPrinter(handle, level)['pDevMode'].Duplex
##    shell.ShellExecuteEx(lpVerb='print', lpFile=file_path, lpParameters=name)
    
ws.PrintOut()
    
win32print.ClosePrinter(handle)
wb.Close()

attributes['pDevMode'].Duplex 用于单面打印,唯一的问题是在 link 中,通过使用 level = 2: 'pDevMode' 不在 attributes for我的打印机。对我来说它必须是 level = 8.

我没有像 link 那样使用注释行打印,因为它没有打印所有四个工作表。将打印列表调整为您想要的工作表并使用 ws.PrintOut() 打印就可以了。