Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将excel文件中选定的工作表打印为python格式的pdf_Python_Excel_Pdf_Printing_Export - Fatal编程技术网

将excel文件中选定的工作表打印为python格式的pdf

将excel文件中选定的工作表打印为python格式的pdf,python,excel,pdf,printing,export,Python,Excel,Pdf,Printing,Export,我需要编写一个python脚本来读取excel文件,找到每个工作表,然后使用excel中定义的标准格式将它们打印到pdf 我发现下面的问题指向我 这使我能够找到每个工作表的名称 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

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

我发现下面的问题指向我

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

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?
worksheetList=book.sheet\u name()
对于工作表列表中的工作表:
如果工作表.find('Form')=0:#这只会删除包含“表单”一词的工作表
book.sheet_by_name(工作表)#我可以使用什么?
或者类似于上面的东西…我可以用什么来实现这一点

它说,XLRD文档令人困惑

xlrd版本0.6.1中未包含的格式设置功能:杂项 纸张级和书本级项目,例如打印布局、屏幕窗格

格式化

导言

xlrd版本0.6.1中新增的这组功能旨在 提供(1)显示/渲染电子表格所需的信息 屏幕上或PDF文件中的内容

哪个是真的?是否可以使用其他软件包打印成pdf


对于unix,我看到有什么适合windows的吗?我找到了,但还不知道如何使用它。

这似乎是放置这个答案的地方

以最简单的形式:

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启动了一个模块:

Hey@GeorgeC,您找到解决方案了吗?我正在寻找一种将整个xsl“打印”到pdf的方法,因此,如果你以答案的形式提交你的解决方案,将非常有帮助:)@GustavoVargas我没有使用以下选项,因为它不保留格式,但xtopdf似乎是一个不错的解决方案-dancingbison.com/products.html,开发人员也非常有帮助。只需添加所有其他页面设置选项:如果选项卡有多个打印区域,如何定义?我不确定,但我有一个关于如何进行的建议。我认为可以添加多个“打印区域”变量。因此,您可以执行以下操作:print_area=A1:G50 print_area 2=A52:G52您可能还需要在图纸索引中循环两次,或者在for循环中执行两次页面设置代码位。这些只是想法。我实际上没有尝试打印多个打印区域。您好,因为您使用的是库:import win32com.client,所以这似乎是一个仅适用于windows的解决方案。这在未安装Microsoft office的Linux服务器上是否可行。这似乎是存储在磁盘上的Excel文件的解决方案。如果有人解释了如何使用Excel实例来实现这一点,这样就不必在转换为PDF之前将其保存在磁盘上,那么这将是对答案的一个很好的编辑。