首页 > 解决方案 > 将 .xls 转换为 .xlsx 以便在 openpyxl 问题中处理

问题描述

我试图避免错误

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.

pyexcel根据来自 stackoverflow 的信息,我使用该库添加了文件转换。

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。所有逻辑都是为 xlsx 编写的。

更新! 看来我找到了原因。文件已转换,但旧文件 (.xml) 继续发送以进行处理。添加了这个字符串

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

标签: pythonexcelpyexcel

解决方案


推荐阅读