Geo*_*geC 9 python printing pdf excel export
我需要编写一个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()
Run Code Online (Sandbox Code Playgroud)
这导致了
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']
Run Code Online (Sandbox Code Playgroud)
现在我想打印以数字开头的每个工作表到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?
Run Code Online (Sandbox Code Playgroud)
或类似于上面的东西...我可以用什么来达到这个目的?
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,我看到有http://dag.wieers.com/home-made/unoconv/用于Windows的任何东西?我找到了https://gist.github.com/mprihoda/2891437,但还无法弄清楚如何使用它.
小智 18
这似乎是回答这个问题的地方.
最简单的形式:
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)
Run Code Online (Sandbox Code Playgroud)
包括一个小的格式魔术,可以缩放以适合单个页面并设置打印区域:
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)
Run Code Online (Sandbox Code Playgroud)
如果你想看看,我还在github上启动了一个模块:https://github.com/spottedzebra/excel/blob/master/excel_to_pdf.py