Преобразование .xls в .xlsx для обработки при проблемах с openpyxl - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь избежать ошибки

openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.

Следуя информации из stackoverflow, я добавил преобразование файлов с помощью библиотеки pyexcel.

def put(self, request, format=None, **kwargs):
    if 'file' not in request.data:
        raise ParseError("Empty content")
    f = request.data['file']
    filename = f.name
    if filename.endswith('.xlsx') or filename.endswith('.xls'):
        try:
            file = default_storage.save(filename, f)

            # This code added 
            if filename.endswith('.xls'):
                import pyexcel
                _f, _ = filename.split('.')
                pyexcel.save_book_as(file_name=file,
                               dest_file_name=f'{_f}.xlsx')
            ####

            r = get_full_excel_file_response(file, context)
        except InvalidFormatException as e:
            .....

Но ошибка все то же самое.

Я ищу самый простой способ конвертировать формат файла в системе Ubuntu и Python 3.7. Для обработки файлов я использую только openpyxl. Все логи c были написаны для xlsx.

UPD !! Похоже, я нашел причину. Файл был преобразован, но старый файл (. xml) продолжал отправляться на обработку. Добавил эту строку

            file = default_storage.url(f'{_f}.xlsx')
...