【问题标题】:Trying to convert excel sheets to PDF using Python but throwing up this error尝试使用 Python 将 Excel 工作表转换为 PDF 但抛出此错误
【发布时间】:2020-10-10 06:50:48
【问题描述】:

您好,我正在尝试使用 python 将 excel 工作表转换为 pdf,将编写的脚本转换为对 word 文档执行相同操作,它工作正常,但在下面标记此错误

Traceback (most recent call last):
  File "C:/Users/alank/Python training/Exceltopdf2.py", line 13, in <module>
    xlxs.SaveAs(out_file, FileFormat=xlxsFormatPDF)
OSError: exception: access violation reading 0xFFFFFFFFFFFFFFFF

任何帮助表示赞赏,脚本如下

import sys
import os
import comtypes.client

xlxsFormatPDF = 17

in_file = (r'C:\Users\alank\Python training\Helloworld.xlsx')
out_file = (r'C:\Users\alank\Python training\Helloworld.pdf')


excel = comtypes.client.CreateObject('Excel.Application')
xlxs = excel.workbooks.Open(in_file)
xlxs.SaveAs(out_file, FileFormat=xlxsFormatPDF)
xlxs.Close()
excel.Quit()

【问题讨论】:

    标签: python excel windows pdf


    【解决方案1】:

    你可以试试win32com.client 像这样:

    import win32com.client
    from pywintypes import com_error
    
    
    WB_PATH =   r'C:\Users\alank\Python training\Helloworld.xlsx'
    
    PATH_TO_PDF = r'C:\Users\alank\Python training\Helloworld.pdf'
    
    
    excel.Visible = False
    try:
        # Open
        wb = excel.Workbooks.Open(WB_PATH)
    
        # Specify the sheet you want to save by index. 
        #if you want all the sheets in excel try with: 
        #wb.WorkSheets(wb.Sheets.Count) or wb.WorkSheets([i=1 for i in range(wb.Sheets.Count)]).Select() 
        ws_index_list = [1,2,3,4,5,6,7,8,9,10,11,12]
        wb.WorkSheets(ws_index_list).Select()
    
        # Save
        wb.ActiveSheet.ExportAsFixedFormat(0, PATH_TO_PDF)
    except com_error as e:
        print('The convertion failed.')
    else:
        print('Succeessful convertion')
    finally:
        wb.Close()
        excel.Quit()
    

    或者你可以像here (Andreas solution)

    import os
    import comtypes.client
    
    SOURCE_DIR = r'C:\Users\alank\Python training'
    TARGET_DIR = r'C:\Users\alank\Python training'
    
    app = comtypes.client.CreateObject('Excel.Application')
    app.Visible = False
    
    infile = os.path.join(os.path.abspath(SOURCE_DIR), 'Helloworld.xlsx')
    outfile = os.path.join(os.path.abspath(TARGET_DIR), 'Helloworld.pdf')
    
    doc = app.Workbooks.Open(infile)
    doc.ExportAsFixedFormat(0, outfile, 1, 0)
    doc.Close()
    
    app.Quit()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-28
      • 2017-01-31
      • 2021-08-27
      • 1970-01-01
      • 2019-11-26
      • 2019-02-23
      • 2021-09-19
      • 2018-01-13
      相关资源
      最近更新 更多