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

40,106

Solution 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')

Solution 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...

Share:
40,106
eegloo
Author by

eegloo

Updated on July 12, 2022

Comments

  • eegloo
    eegloo almost 2 years

    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