python与excel第五节 打印excel

批量打印工作表

import os
import xlwings as xw
file_path =
'D:\\TEST\\pythonexcel'
file_list = os.listdir(file_path)
app = xw.App(
visible=False,add_book=False)
for i in file_list:
   
if i.startswith('~$'):
        
continue
   
file_paths = os.path.join(file_path,i)
    workbook = app.books.open(file_paths)

# 打印工作簿;xlwings模块没有提供打印工作簿的函数,利用工作簿对象的api属性调用VBAPrintOut()函数来打印工作簿
   
print(i)
   
# workbook.api.PrintOut()
    # workbook.api.PrintOut(From=1,To=3,Copies=1,Preview=True,PrintToFile=True,PrToFileName='
测试文件')
   
workbook.api.PrintOut(From=1,To=1,Copies=1,Preview=True,PrintToFile=True,PrToFileName='测试文件')
   
# workbook.api.PrintOut(Preview=True,From=1,Copies=1)
app.quit()

上面xlwings.api.vba方法可以直接调用vba中方法。

vba中Printout方法说明:

语法格式:

expression.PrintOut (FromToCopiesPreviewActivePrinterPrintToFileCollatePrToFileNameIgnorePrintAreas)

Name

Required/Optional

Description

From

可选

数字类型,打印的起始页,如果为空则从开始页打印

To

可选

数字类型,打印的结束页,如果为空则打印到最后一页

Copies

可选

数字类型,设置打印几份,如果为空则打印一份。

Preview

可选

布尔类型,默认False。为True时打印前先预览,False时直接打印。

ActivePrinter

可选

设置用于本次打印的打印机名称,如果为空则用系统指定打印机执行。

PrintToFile

可选

布尔类型,默认False。为True时,则打印到prn文件,不打印到到打印机。False时打印到 打印机。如果为True且PrToFileName参数没有指定,则系统会提示输入文件名称。

Collate

可选

布尔类型,默认为True,为True时逐份打印多个副本。

PrToFileName

可选

字符类型,当PrintToFile参数为True时,该参数指定prn文件的名称。

IgnorePrintAreas

可选

布尔类型,为True时忽略excel中的打印区域设置,直接打印整个文件。

注意1:From和To参数指定的打印起始页并非excel文件中的起始页或者终止页,而是打印机打印的打印的起止页,即手工打印时设置的起止页码。

注意2:这个语句:workbook.api.PrintOut(From=1,To=1,Copies=1,Preview=True,PrintToFile=True,PrToFileName='测试文件')有的时候打印不出来,这时候考虑一下是否是起始页、终止页、预览几个参数的设置问题。也有可能是系统打印机设置的问题。

你可能感兴趣的:(python,python,excel,开发语言,打印)