繁体   English   中英

将excel文件中选择的工作表打印到python中的pdf

[英]Print chosen worksheets in excel files to pdf in python

我需要编写一个 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

哪个是真的? 可以使用其他一些 package 打印到 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

是的Kashyap,我得出的结论是python,基本上是不可能的。 所以我进入了 realm 的 JVM 种语言。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM