#python #openpyxl
#python #openpyxl
Вопрос:
Привет, ребята, у меня есть программа, которая создает и сохраняет файл xlsx, затем открывает его и конвертирует в pdf … но затем я хочу, чтобы он удалил исходный файл xlsx.
- он создает оба файла в нужном каталоге.
- Однако он не удаляет xlsx, и я не могу удалить его вручную, поскольку он говорит, что файл все еще открыт
wb.save(NEW_RECEIPT_PATH new_file_name_xlsx)
#this should turn the xlsx into a pdf
xlApp = client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open(NEW_RECEIPT_PATH new_file_name_xlsx)
ws2 = books.Worksheets[0]
ws2.Visible = 1
save_the_pdf = NEW_RECEIPT_PATH new_file_name_pdf
ws2.ExportAsFixedFormat(0,save_the_pdf)
#this removes the xlsx file
os.remove(NEW_RECEIPT_PATH new_file_name_xlsx)
Я подозреваю, что я не использовал .close() в нужном месте и что он просто оставил файл Excel открытым. Я пытался…
wb.save(NEW_RECEIPT_PATH new_file_name_xlsx)
wb.close()
#this should turn the xlsx into a pdf
xlApp = client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open(NEW_RECEIPT_PATH new_file_name_xlsx)
ws2 = books.Worksheets[0]
ws2.Visible = 1
save_the_pdf = NEW_RECEIPT_PATH new_file_name_pdf
ws2.ExportAsFixedFormat(0,save_the_pdf)
#this removes the xlsx file
os.remove(NEW_RECEIPT_PATH new_file_name_xlsx)
безрезультатно. Любые подсказки были бы весьма признательны.
-обновить-
Я определил, что проблема заключается в этих строках…
#this should turn the xlsx into a pdf
xlApp = client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open(NEW_RECEIPT_PATH new_file_name_xlsx)
ws2 = books.Worksheets[0]
ws2.Visible = 1
save_the_pdf = NEW_RECEIPT_PATH new_file_name_pdf
ws2.ExportAsFixedFormat(0,save_the_pdf)
Файл xlsx остается открытым и не позволит мне удалить его с помощью кода … то же самое с удалением файла xlsx вручную. Я должен дважды щелкнуть файл, чтобы открыть его, затем закрыть его, прежде чем я смогу удалить.
Как я могу закрыть файл xlsx в конце этого кода?
Комментарии:
1. Моим первым предложением было бы проверить диспетчер задач, открыты ли еще экземпляры, если вы не можете удалить их вручную.
2. спасибо, я сделал, и он сказал, что Excel не включен
3. Вам нужно закрыть книгу, которую вы открываете с помощью
xlApp
.4. Я понял, что … есть идеи, как?
Ответ №1:
Вольно guys….as Я думал, что не закрыл его должным образом. Приведенный ниже код работает блестяще.
Черт, ненавижу зависать на несколько дней.
#this should turn the xlsx into a pdf
xlApp = client.Dispatch("Excel.Application")
books = xlApp.Workbooks.Open(NEW_RECEIPT_PATH new_file_name_xlsx)
ws2 = books.Worksheets[0]
ws2.Visible = 1
save_the_pdf = NEW_RECEIPT_PATH new_file_name_pdf
ws2.ExportAsFixedFormat(0,save_the_pdf)
books.Close(True) # save the workbook
#this removes the xlsx file
os.remove(NEW_RECEIPT_PATH new_file_name_xlsx)