Сохранение файлов Excel в виде PDF с использованием библиотеки Python Win32com и получения ошибокPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сохранение файлов Excel в виде PDF с использованием библиотеки Python Win32com и получения ошибок

Сообщение Anonymous »

Я пытаюсь запустить сценарий, который считывает файл TXT, который содержит список путей файла для Excel, и сохранить каждый в качестве PDF в указанном каталоге. Я могу заставить его прочитать файл TXT и проанализировать список путей файла без проблем, но он сталкивается с ошибкой, когда он пытается сохранить файл как PDF.

Код: Выделить всё

def save_pdfs(files_list,export_folder):
for line_item, filename in enumerate(files_list, start=1):
excel = client.Dispatch("Excel.Application")
excel.Application.DisplayAlerts = False
print(line_item, f'{filename}')
try:
wb = excel.Workbooks.Open(filename, ReadOnly=True)
work_sheets = wb.Worksheets[0]
if len(str(line_item)) == 1:
work_sheets.ExportAsFixedFormat(0, f'{export_folder}\\0{line_item}')
else:
work_sheets.ExportAsFixedFormat(0, f'{export_folder}\\{line_item}')
except Exception as e:
print(f"An error occurred: {e}")
finally:
wb.Close(False)
excel.Application.DisplayAlerts = True
excel.Quit()
< /code>
И всякий раз, когда я запускаю это, я получаю следующую ошибку для каждого из файлов: < /p>
An error occurred: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', 'Document not saved. The document may be open, or an error may have been encountered when saving.', 'xlmain11.chm', 0, -2146827284), None)
< /code>
У меня нет Excel, запущенного, когда я запускаю скрипт, и я проверял сами файлы, и никто больше не открыт файл. Если кто -то еще столкнулся с подобной ситуацией, пожалуйста, дайте мне знать, что вы сделали, чтобы исправить ее. Я заполнил свой тестовый файл, выбрав файлы, щелкнув правой кнопкой мыши и выбрав «копию в качестве пути» и вставая в текстовый файл.from win32com import client
from tkinter import filedialog, messagebox
from pypdf import PdfWriter
import glob

def pdf_merge(directory):
merger = PdfWriter()
pdf_file_list = glob.glob(f'{directory}\\*.pdf')
for pdf in pdf_file_list:
merger.append(pdf)
merger.write(f'{directory}\\Merged.pdf')
merger.close()

def read_filenames(filepath):
filenames = []
try:
with open(filepath, 'r') as file:
for line in file:
filename = line.strip().replace('"','')
if filename:
filenames.append(filename)
except FileNotFoundError:
print(f"Error: File not found at path: {filepath}")
except Exception as e:
print(f"An error occurred: {e}")
return filenames

def save_pdfs(files_list,export_folder):
excel = client.Dispatch("Excel.Application")
excel.Application.DisplayAlerts = False
for line_item, filename in enumerate(files_list, start=1):
print(line_item, f'{filename}')
try:
wb = excel.Workbooks.Open(filename, ReadOnly=True)
work_sheets = wb.Worksheets[0]
if len(str(line_item)) == 1:
work_sheets.ExportAsFixedFormat(0, f'{export_folder}\\0{line_item}.pdf')
else:
work_sheets.ExportAsFixedFormat(0, f'{export_folder}\\{line_item}.pdf')
except Exception as e:
print(f"An error occurred: {e}")
finally:
wb.Close(False)
excel.Application.DisplayAlerts = True
excel.Quit()

messagebox.showinfo(title='Seleect File', message= 'Please select text file with listed file paths.')
file_path = filedialog.askopenfilename()
files_list = read_filenames(file_path)
messagebox.showinfo(title='Seleect Folder', message= 'Please select folder to save output files.')
export_folder = filedialog.askdirectory()
save_pdfs(files_list, export_folder)
if messagebox.askyesno(title="Merge?",message="Do you want to merge the PDFs?"):
pdf_merge(export_folder)

< /code>
Для целей тестирования содержимое текстового файла выглядит следующим образом: < /p>
"C:\Python Scripts\Test Files\Test File 1.xlsx"
"C:\Python Scripts\Test Files\Test File 2.xlsx"
"C:\Python Scripts\Test Files\Test File 3.xlsx"
"C:\Python Scripts\Test Files\Test File 4.xlsx"
Но на практике будет список путей файлов в разных каталогах в сети.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ting-error
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сохранение файлов Excel в виде PDF с использованием библиотеки Python Win32com и получения ошибок
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Excel с использованием Win32com и Python
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Установка метки чувствительности для Excel с использованием Win32com (Python)
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Недопустимая строка класса с использованием Python библиотеки Win32com
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Недействительная строка класса с использованием библиотеки Win32com Python
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»