.xlsx和xls(最新版本)到pdf使用python

eeg*_*loo 5 python pdf excel excel-2010 win32com

借助这个.doc到pdf使用python 链接我正在尝试使用excel(.xlsx和xls格式)

以下是修改的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()
Run Code Online (Sandbox Code Playgroud)

它显示以下错误:

>>> 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)
>>>
Run Code Online (Sandbox Code Playgroud)

有问题

doc.SaveAs(out_file,FileFormat = 56)

FileFormat文件格式应该是什么?请帮忙

eeg*_*loo 19

xlsxwriter的链接:

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

借助此功能,您可以使用.xlsx.xls生成excel文件

例如,excel文件生成的名称是trial.xls

现在,如果要生成该excel文件的pdf,请执行以下操作:

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')
Run Code Online (Sandbox Code Playgroud)

  • 虽然xlsxwriter是一个有用的工具,但遗憾的是它不能让你编辑现有的xls文件,只能从头创建一个.这在许多情况下使其无用. (2认同)
  • 这是Windows的唯一解决方案吗? (2认同)

小智 5

我得到了同样的事情和同样的错误......答案:57......见下文......

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()
Run Code Online (Sandbox Code Playgroud)

...作为脆弱的ExportAsFixedFormat的替代...