Попытка преобразовать листы Excel в PDF с использованием Python, но вызывает эту ошибку - PullRequest
0 голосов
/ 20 июня 2020

Привет, я пытаюсь преобразовать лист Excel в pdf, используя python, преобразовал сценарий, написанный так, чтобы делать то же самое с документами 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()

1 Ответ

0 голосов
/ 20 июня 2020

Вы можете попробовать с 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()

Или вы можете сделать это как здесь (решение Андреаса) :

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...