如何从 Excel 工作表中获取某些列并通过客户端调度另存为 pdf?

问题描述 投票:0回答:1

我有一个包含六列(编号、名称、组、作品集、地址和电子邮件)的 Excel 文件,我需要使用客户端调度,以仅获取工作表的列(名称、组和电子邮件)和将其另存为 pdf 并保存在新文件夹中。

我有下一个代码。

bas=r'D:\Users\Aplication'

excel= client.Dispatch("Excel.Application")
excel.Visible=False
excel.ScreenUpdating= False
excel.EnableEvents= False
excel.Interactive= False
excel.DisplayAlerts=False

sheets2= excel.Workbooks.Open(os.path.join(os.path.join(bas,"Report"),f"GroupA.xlsx"))
work_sheets2=sheets2.Worksheets[0]
work_sheets2.Range('B:B','C:C','F:F')
work_sheets2.ExportAsFixedFormat(0,os.path.join(os.path.join(bas,"Proofpdf"),f"ListA.pdf"),OpenAfterPublish=0)
sheets2.Close(True)

它可以工作,但结果是一个 PDF,其中包含与 Excel 文件中相同的六列。有人可以帮助我仅选择 Excel 的某些列并将其保存在 PDF 文件中吗?

python pywin32 win32com pyexcel fixed-format
1个回答
0
投票

我认为在范围内使用非连续列是行不通的。当然我会期待这条线

work_sheets2.Range('B:B','C:C','F:F') 

返回错误。无论哪种方式,您都没有选择范围,该行是一条不适用于任何内容的语句。您需要分配给一个变量,然后导出该范围,请参阅代码示例。

还期望此行返回选择工作表的错误。

work_sheets2=sheets2.Worksheets[0]

无论如何,您可以临时将 F 列复制到 D 列的位置,这样您就有一个连续的范围 B - D 并将该范围用于 PDF。
然后导出后只需删除D列即可。

示例代码

import os
from win32com import client


xlToRight = -4161

bas=r'D:\Users\Aplication'

excel = client.Dispatch("Excel.Application")
excel.Visible = False
excel.ScreenUpdating = False
excel.EnableEvents = False
excel.Interactive = False
excel.DisplayAlerts = False

sheets2 = excel.Workbooks.Open(os.path.join(os.path.join(bas, "Report"), f"GroupA.xlsx"))
sheet_names = [sheet.Name for sheet in sheets2.Sheets]

### Select the required sheet
# work_sheets2 = sheets2.Worksheets[0]
work_sheets2 = sheets2.Worksheets(1)

### Insert a copy of Column F into position of column D
work_sheets2.Range("F:F").Copy()
work_sheets2.Range("D:D").Insert(Shift=xlToRight)

### Set range of data to export and assign to variable 'rng'
# work_sheets2.Range('B:B', 'C:C', 'F:F')
rng = work_sheets2.Range('B:B', 'D:D')

### Export 'rng' to PDF
rng.ExportAsFixedFormat(0, os.path.join(os.path.join(bas, "Proofpdf"), f"ListA.pdf"), OpenAfterPublish=0)

### Delete temp copied Column
work_sheets2.Range("D:D").Delete()

### Close and exit
sheets2.Close(True)
excel.Quit()

对于示例表;

PDF 是

© www.soinside.com 2019 - 2024. All rights reserved.