我需要编写一个python脚本来读取excel文件,找到每个工作表,然后使用excel中定义的标准格式将这些文件打印到pdf。
我发现了以下问题How can I open an Excel file in Python?,它向我指出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我看到窗口有http://dag.wieers.com/home-made/unoconv/什么?我找到了https://gist.github.com/mprihoda/2891437,但还无法弄清楚如何使用它。
答案 0 :(得分:13)
这似乎是回答这个问题的地方。
以最简单的形式:
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