【问题标题】:Converting Excel to CSV python将 Excel 转换为 CSV python
【发布时间】:2016-11-30 08:46:43
【问题描述】:

我正在使用 xlrd 将我的 .xls Excel 文件转换为 CSV 文件,但是当我尝试打开工作簿时,我的程序崩溃并发送错误消息

bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/xlrd/book.py", line 1224, in bof_error
    raise XLRDError('Unsupported format, or corrupt file: ' + msg)
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found 'Chrom\tPo'

Chrom\tPo 是我的 excel 文件标题的一部分,但我不明白 Excel 文件的错误是什么以及如何更改它。

当我尝试使用 xlrd.open_workbook('Excel File') 打开 excel 文件时程序崩溃

【问题讨论】:

  • 您使用的是什么版本的 xlrd,以及什么类型的 Excel 文件(xls vs xlsx)?
  • 是转换文件时出错,还是转换后尝试打开文件时出错?
  • Dan - 我使用的 xlrd 版本是 1.0.0,我使用的是 .xls。当我尝试 xlrd.open_workbook(excelfile) 时转换文件时发生错误

标签: python


【解决方案1】:

我会为此使用openpyxl

import openpyxl
wb = openpyxl.load_workbook(file_name)
ws = wb.worksheets[page_number]
table = []
for row_num in range(ws.get_highest_row()):
  temp_row = []
  for col_num in range(ws.get_highest_column()):
    temp_row.append(ws.cell(row=row_num, col=col_num).value)
  table.append(temp_row[:])

这会将工作表的内容作为二维列表提供给您,然后您可以将其写入 csv 或随意使用。

如果您因任何原因无法使用xlrd,您可能只需将文件从xls 转换为xlsx

【讨论】:

  • 我意识到错误是即使文件以名称 .xls 保存,它实际上是一个制表符分隔的文件,我需要将它保存为 xls 文件,然后一切正常.. 谢谢你
【解决方案2】:

这是上一个问题的答案:How to save an Excel worksheet as CSV from Python (Unix)?

答案是 openpyxl 和 xlrd。

【讨论】:

    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2012-10-10
    • 1970-01-01
    • 2016-07-02
    相关资源
    最近更新 更多