.xlsx and xls(Latest Versions) to pdf using python

末鹿安然 提交于 2019-11-26 10:56:32

问题


With the help of this .doc to pdf using python Link I am trying for excel (.xlsx and xls formats)

Following is modified Code for Excel:

import os
from win32com import client

folder = \"C:\\\\Oprance\\\\Excel\\\\XlsxWriter-0.5.1\"
file_type = \'xlsx\'
out_folder = folder + \"\\\\PDF_excel\"

os.chdir(folder)

if not os.path.exists(out_folder):
    print \'Creating output folder...\'
    os.makedirs(out_folder)
    print out_folder, \'created.\'
else:
    print out_folder, \'already exists.\\n\'

for files in os.listdir(\".\"):
    if files.endswith(\".xlsx\"):
        print files

print \'\\n\\n\'

word = client.DispatchEx(\"Excel.Application\")
for files in os.listdir(\".\"):
    if files.endswith(\".xlsx\") or files.endswith(\'xls\'):
        out_name = files.replace(file_type, r\"pdf\")
        in_file = os.path.abspath(folder + \"\\\\\" + files)
        out_file = os.path.abspath(out_folder + \"\\\\\" + out_name)
        doc = word.Workbooks.Open(in_file)
        print \'Exporting\', out_file
        doc.SaveAs(out_file, FileFormat=56)
        doc.Close()

It is showing following error :

>>> execfile(\'excel_to_pdf.py\')
Creating output folder...
C:\\Excel\\XlsxWriter-0.5.1\\PDF_excel created.
apms_trial.xlsx
~$apms_trial.xlsx

Exporting C:\\Excel\\XlsxWriter-0.5.1\\PDF_excel\\apms_trial.pdf
Traceback (most recent call last):
  File \"<stdin>\", line 1, in <module>
  File \"excel_to_pdf.py\", line 30, in <module>
    doc = word.Workbooks.Open(in_file)
  File \"<COMObject <unknown>>\", line 8, in Open
pywintypes.com_error: (-2147352567, \'Exception occurred.\', (0, u\'Microsoft Excel
\', u\"Excel cannot open the file \'~$apms_trial.xlsx\' because the file format or f
ile extension is not valid. Verify that the file has not been corrupted and that
 the file extension matches the format of the file.\", u\'xlmain11.chm\', 0, -21468
27284), None)
>>>

There is problem in

doc.SaveAs(out_file, FileFormat=56)

What should be FileFormat file format? Please Help


回答1:


Link of xlsxwriter :

https://xlsxwriter.readthedocs.org/en/latest/contents.html

With the help of this you can generate excel file with .xlsx and .xls

for example excel file generated name is trial.xls

Now if you want to generate pdf of that excel file then do the following :

from win32com import client
xlApp = client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open('C:\\excel\\trial.xls')
ws = books.Worksheets[0]
ws.Visible = 1
ws.ExportAsFixedFormat(0, 'C:\\excel\\trial.pdf')



回答2:


I got the same thing and the same error... ANSWER: 57.... see below...

from win32com import client
import win32api

def exceltopdf(doc):
    excel = client.DispatchEx("Excel.Application")
    excel.Visible = 0

    wb = excel.Workbooks.Open(doc)
    ws = wb.Worksheets[1]

    try:
        wb.SaveAs('c:\\targetfolder\\result.pdf', FileFormat=57)
    except Exception, e:
        print "Failed to convert"
        print str(e)
    finally:
        wb.Close()
        excel.Quit()

... as an alternative to the fragile ExportAsFixedFormat...




回答3:


You can print an excel sheet to pdf on linux using python. Do need to run openoffice as a headless server and use unoconv, takes a bit of configuring but is doable

You run OO as a (service) daemon and use it for the conversions for xls, xlsx and doc, docx.

http://dag.wiee.rs/home-made/unoconv/



来源:https://stackoverflow.com/questions/20854840/xlsx-and-xlslatest-versions-to-pdf-using-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!