weixin_45367856 2023-09-16 10:53 采纳率: 57.1%
浏览 90
已结题

python读取wps表格问题

python使用pandas和openpyxl或者xlrd库读取wps生成的xlsx出错(zipfile.BadZipFile: File is not a zip file),如何解决

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-09-16 12:22
    关注

    引用 皆我百晓生 小程序回复内容作答:
    出现该错误的原因是WPS表格文件的格式不是标准的xlsx格式,而是一种特殊的格式(例如.et表格文件)。

    要解决这个问题,你可以尝试以下方法:

    1. 将WPS表格文件手动另存为xlsx格式。在WPS表格中打开文件,然后选择“文件”-“另存为”,将文件保存为xlsx格式。然后再尝试使用pandas和openpyxl或者xlrd库读取。

    2. 使用pandas的高级读取函数read_excel。pandas的read_excel函数可以读取多种不同文件格式的表格数据,包括WPS表格文件。使用该函数时,需要指定engine='pyxlsb'参数以支持WPS表格文件。示例代码如下:

    import pandas as pd
    
    df = pd.read_excel('wps_file.et', engine='pyxlsb')
    

    你需要将'wps_file.et'替换为你的WPS表格文件的路径。

    1. 将WPS表格文件手动转换为标准的xlsx格式。可以使用WPS表格软件打开文件,然后选择“文件”-“另存为”,将文件保存为xlsx格式。然后再尝试使用pandas和openpyxl或者xlrd库读取。

    如果以上方法都无法解决问题,可能是因为WPS表格文件的格式比较特殊,无法被常规的库读取。你可以尝试使用其他解决方案,如使用Python的zipfile库解压缩文件并读取其中的数据。示例代码如下:

    import zipfile
    import pandas as pd
    
    def read_wps_excel(file_path):
        with zipfile.ZipFile(file_path) as z:
            with z.open('xl/workbook.xml') as f:
                workbook_xml = f.read()
        
        df = pd.read_xml(workbook_xml)
        return df
    
    df = read_wps_excel('wps_file.et')
    

    以上代码使用zipfile模块打开WPS文件,然后读取其中的xl/workbook.xml文件,该文件包含了表格的结构和数据。然后使用pandas的read_xml函数读取该文件并转换为DataFrame。

    请注意,这种方法只适用于WPS表格文件的结构和格式不变的情况下,如果WPS表格文件的结构发生了变化,以上代码可能会出错。

    希望以上方法能够帮助到你!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月26日
  • 修改了问题 9月16日
  • 创建了问题 9月16日