WinError 32 Процесс не может получить доступ к файлу, поскольку он используется другим процессом, не может удалить файл через python или вручную

#python #openpyxl

#python #openpyxl

Вопрос:

Привет, ребята, у меня есть программа, которая создает и сохраняет файл xlsx, затем открывает его и конвертирует в pdf … но затем я хочу, чтобы он удалил исходный файл xlsx.

  1. он создает оба файла в нужном каталоге.
  2. Однако он не удаляет 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)