Error when converting Excel document to pdf using comtypes in Python

后端 未结 2 460
隐瞒了意图╮
隐瞒了意图╮ 2021-01-15 17:03

I am trying to convert an Excel spreadsheet to PDF using Python and the comtypes package using this code:

import os
import comtypes.client

FORMAT_PDF = 17
S         


        
相关标签:
2条回答
  • 2021-01-15 17:41

    You need to describe ExportAsFixedFormat(0,outputfile) to save workbook in pdf format. The solution from http://thequickblog.com/convert-an-excel-filexlsx-to-pdf-python/ works for me.

    from win32com import client
    import win32api
    input_file = r'C:\Users\thequickblog\Desktop\Python session 2\tqb_sample.xlsx'
    #give your file name with valid path 
    output_file = r'C:\Users\thequickblog\Desktop\Python session 2\tqb_sample_output.pdf'
    #give valid output file name and path
    app = client.DispatchEx("Excel.Application")
    app.Interactive = False
    app.Visible = False
    Workbook = app.Workbooks.Open(input_file)
    try:
        Workbook.ActiveSheet.ExportAsFixedFormat(0, output_file)
    except Exception as e:
        print("Failed to convert in PDF format.Please confirm environment meets all the requirements  and try again")
        print(str(e))
    finally:
        Workbook.Close()
        app.Exit()
    
    0 讨论(0)
  • 2021-01-15 17:59

    Found a solution - this seems to be working:

    import os
    import comtypes.client
    
    SOURCE_DIR = 'C:/Users/IEUser/Documents/jscript/test/resources/root3'
    TARGET_DIR = 'C:/Users/IEUser/Documents/jscript'
    
    app = comtypes.client.CreateObject('Excel.Application')
    app.Visible = False
    
    infile = os.path.join(os.path.abspath(SOURCE_DIR), 'spreadsheet1.xlsx')
    outfile = os.path.join(os.path.abspath(TARGET_DIR), 'spreadsheet1.pdf')
    
    doc = app.Workbooks.Open(infile)
    doc.ExportAsFixedFormat(0, outfile, 1, 0)
    doc.Close()
    
    app.Quit()
    

    This link may also be helpful as an inspiration regarding the arguments to the ExportAsFixedFormatfunction: Document.ExportAsFixedFormat Method (although some of the values of arguments have to be modified a bit).

    0 讨论(0)
提交回复
热议问题