当前位置: 首页 > 面试题库 >

将Excel文件中的选定工作表打印为python中的pdf

汲灿
2023-03-14
问题内容

我需要编写一个python脚本来读取excel文件,找到每个工作表,然后使用excel中定义的标准格式将它们打印为pdf。

我发现以下问题如何在Python中打开Excel文件?这使我指向http://www.python-
excel.org/

这使我能够找到每个工作表的名称。

import xlrd
book = xlrd.open_workbook("myfile.xls")
print "Worksheet name(s):", book.sheet_names()

这导致

Worksheet name(s): [u'Form 5', u'Form 3', u'988172 Adams Road', u'379562 Adams Road', u'32380 Adams Road', u'676422 Alderman Road', u'819631 Appleyard Road', u'280998 Appleyard Road', u'781656 Atkinson Road', u'949461 Barretts Lagoon Road', u'735284 Bilyana Road', u'674784 Bilyana Road', u'490894 Blackman Road', u'721026 Blackman Road']

现在,我要打印每个以pdf开头的工作表。

所以我可以

worksheetList=book.sheet_names()
for worksheet in worksheetList:
 if worksheet.find('Form')!=0: #this just leaves out worksheets with the word 'form' in it
  <function to print to pdf> book.sheet_by_name(worksheet) #what can I use for this?

或与上述类似的东西…我可以用什么来实现这一目标?

XLRD文档令人困惑,说

xlrd版本0.6.1中未包括的格式化功能:其他纸张级和书籍级项目,例如打印布局,屏幕窗格

格式化

介绍

xlrd版本0.6.1中新增的功能集合旨在提供(1)在屏幕上或PDF文件中显示/呈现电子表格内容(例如)的信息。

参见https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html?p=4966

哪个是对的?可以使用其他软件包打印为pdf吗?

对于Unix,我看到Windows可以使用http://dag.wieers.com/home-
made/unoconv/
吗?我找到了https://gist.github.com/mprihoda/2891437,但还不知道如何使用它。


问题答案:

这似乎是放置此答案的地方。

最简单的形式:

import win32com.client

o = win32com.client.Dispatch("Excel.Application")

o.Visible = False

wb_path = r'c:\user\desktop\sample.xls'

wb = o.Workbooks.Open(wb_path)



ws_index_list = [1,4,5] #say you want to print these sheets

path_to_pdf = r'C:\user\desktop\sample.pdf'



wb.WorkSheets(ws_index_list).Select()

wb.ActiveSheet.ExportAsFixedFormat(0, path_to_pdf)

包括一些格式化魔术,该魔术可以缩放以适合单个页面并设置打印区域:

import win32com.client

o = win32com.client.Dispatch("Excel.Application")

o.Visible = False

wb_path = r'c:\user\desktop\sample.xls'

wb = o.Workbooks.Open(wb_path)



ws_index_list = [1,4,5] #say you want to print these sheets

path_to_pdf = r'C:\user\desktop\sample.pdf'

print_area = 'A1:G50'



for index in ws_index_list:

    #off-by-one so the user can start numbering the worksheets at 1

    ws = wb.Worksheets[index - 1]

    ws.PageSetup.Zoom = False

    ws.PageSetup.FitToPagesTall = 1

    ws.PageSetup.FitToPagesWide = 1

    ws.PageSetup.PrintArea = print_area



wb.WorkSheets(ws_index_list).Select()

wb.ActiveSheet.ExportAsFixedFormat(0, path_to_pdf)

如果您想查看它,我也已经在github上启动了一个模块:https
:
//github.com/spottedzebra/excel/blob/master/excel_to_pdf.py



 类似资料:
  • 所以我有 1500 个 Excel 工作簿,每个工作簿都有 10 张结构完全相同的工作表。我尝试将多个Excel工作簿合并到一个文件中,并使用以下代码成功: 谢谢,努尔贝克

  • 问题内容: 我想向现有的Excel文件中添加工作表。我怎样才能做到这一点?我正在研究一个selenium项目,我想将所有自动化结果表添加到单个excel文件中。现在,我能够为每个工作表创建新的Excel文件。 问题答案: 如果从Java 使用: 分别打开现有工作表或创建新工作表: 要检查工作表是否存在以创建唯一的工作表名称,可以使用如下所示的内容: 然后您可以通过调用添加工作表: 在这种情况下,工

  • 问题内容: 我有几个要转储为excel工作簿(xls / xlsx)中新工作表的csv文件。我该如何实现? Google搜索并找到“ pyXLwriter”,但该项目似乎已停止。当我尝试“ pyXLwriter”时,我想知道是否有其他选择/建议/模块? 非常感谢。 [编辑] 这是我的解决方案:(任何人都有更精简的pythonic解决方案?请发表评论。thx) 问题答案: 不知道 您 所说的“更精简

  • 此格式良好的XML文档使用MS VBA代码馈送到Excel 2007。我成功地使用DOMDocument和IXMLDOMElement导入了名称、城市和产品 但是,xa:MeContext id、vsData1 id、VsData2 id、客户id和订单id不会导出到Excel工作表。 每个Excel行都有以下标题,其中包含从XML文档填充的数据:

  • 假设我有一个包含3张工作表的工作簿,“工作表1”、“工作表2”和“工作表3”。现在我只想打印“第1页”,所以在VBA我用了 但宏仍然打印所有3个工作表。当我专门编写只打印1的代码时,发生了什么导致它打印所有3张纸? 我正在使用: 微软卓越卓越专业增强版 2010

  • 这里是VBA新手。 谢谢你的教育!