【问题标题】:How do I read a XML spreadsheet which has .xls suffix in python?如何在 python 中读取具有 .xls 后缀的 XML 电子表格?
【发布时间】:2023-01-27 00:47:19
【问题描述】:

我有一个 excel 提取文件,该文件以 .xls 后缀命名。但这个文件实际上是一个 XML 电子表格。我正在努力用 python 阅读此内容以进行分析。在这个文件中有 3 张,我需要专门阅读 sheetname ="sheetname3"

我尝试了以下几件事。

1- 尝试将 pd.read_excel 与 openpyxl 引擎一起使用。

kpath = os.path.join(r"F:\DOCUMENT\Treasury\Test\K vs Clearer", 'REC_IRSOIS_' +  DATE + '.xls')

df = pd.read_excel(kpath, sheet_name ="sheetname3", engine="openpyxl")

2- 下面我尝试以编程方式转换此 Excel XML 文件,但不确定如何在此处指定工作表名称。

class ExcelHandler(ContentHandler):
    def __init__(self):
        self.chars = [  ]
        self.cells = [  ]
        self.rows = [  ]
        self.tables = [  ]
    def characters(self, content):
        self.chars.append(content)
    def startElement(self, name, atts):
        if name=="Cell":
            self.chars = [  ]
        elif name=="Row":
            self.cells=[  ]
        elif name=="Table":
            self.rows = [  ]
    def endElement(self, name):
        if name=="Cell":
            self.cells.append(''.join(self.chars))
        elif name=="Row":
            self.rows.append(self.cells)
        elif name=="Table":
            self.tables.append(self.rows)
            
excelHandler = ExcelHandler()
parse(kpath, excelHandler, sheet_name= "IRS & OIS Reconciliation Output")

【问题讨论】:

  • 当你阅读pandas时会发生什么?
  • 你似乎有点困惑XMLxls.如果文件是XML,你为什么不使用它来阅读它pd.readXML
  • @CristiFati,我猜 OP 意味着它是 xlsx 文件,扩展名为 xls。但你是对的,这还不清楚
  • 该文件的名称中包含 .xls,因此它不起作用。
  • 当我尝试阅读 pandas 时,出现错误 BadZipFile: File is not a zip file。 df = pd.read_excel(kpath, header=None, engine="openpyxl")

标签: python xml


【解决方案1】:

openpyxl 无法打开遗留的 .xls 文件,它适用于较新的 XLSX/XLSM 文件 (docs)。

使用正确的引擎 (docs)

df = pd.read_excel(kpath, sheet_name ="sheetname3", engine="xlrd")

或者只是将引擎留空,pandas 将为您的文件类型使用正确的引擎。

df = pd.read_excel(kpath, sheet_name ="sheetname3")

【讨论】:

  • 谢谢,但它给了我 XLRDError:不支持的格式,或损坏的文件:预期的 BOF 记录;发现 b'<?xml ve'
  • 那么,你的文件既不是 XLS 也不是 XLSX,你从哪里得到的?
  • 所以 IT 告诉我该文件实际上是一个 XML,但文件名将包含 .xls ,我的文件名为 REC_DATA_2023_01_18.xls ,当我打开文件时,我收到一条消息,指出文件格式和扩展名不匹配。不确定在这里做什么
  • 您似乎确实有一个 XML 文件给您在上面发布的 &lt;?xml ve,这是 XML 声明的开头,但是没有看到该文件的内容,我无法为您提供更多帮助。你试过用pandas.read_xml打开吗?
【解决方案2】:

我只是使用我提供的 Excel 处理程序代码并手动将选项卡移动到第一个位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多