有没有办法用openpyxl读取没有工作簿的Excel文件?

吉列夫

我正在使用Python 2.7openpyxl==2.5.11

对于具有有效工作簿的文件,我正在使用以下代码读取内容:

wb = openpyxl.load_workbook('my_file.xlsx', read_only=True)
ws = wb.worksheets[1]
rows = ws.rows

现在,测试人员向我提供了一个旧文件,该文件没有有效的工作簿部分,并引发了以下错误:

IOError: File contains no valid workbook part

在这条线 ws = wb.worksheets[1]

我在openpyxl文档中找不到如何读取此类文件数据的示例。

我设法使用读取文件pandas data = pandas.read_excel('my_file.xlxs')

是否可以使用读取文件openpyxl,因为我已经openpyxl在我的应用程序中使用过,并且不想完全迁移到pandas,也不想在我的应用程序中的不同位置使用它们。理想情况下,我想在所有应用程序服务中使用单个库对Excel文件进​​行操作,并且如果可能的话,我希望避免将form转换openpyxlpandas,因为我无法估计该转换将需要多少工作量,也无法确定我的所有用例是否都可以解决带的盒子pandas

吉列夫

菠萝的回答乔恩·克莱门茨的评论的启发,我想出了一个解决方案,可以将数据读入xlrd工作簿,然后根据openpyxl该功能创建工作簿。这对我的用例很有帮助,因为我已经openpyxl在应用程序的多个位置使用了工作簿。这是代码:

import xlrd
from openpyxl import Workbook


def open_excel_without_workbook_part(filename):
    xlrd_workbook = xlrd.open_workbook(filename=filename)
    xlrd_worksheet = xlrd_workbook.sheet_by_index(0)
    nrows = xlrd_worksheet.nrows
    ncols = xlrd_worksheet.ncols

    # create a xlsx file using openpyxl
    openpyxl_book = Workbook()
    openpyxl_worksheet = openpyxl_book.active

    for row in xrange(0, nrows):
        for col in xrange(0, ncols):
            openpyxl_worksheet.cell(row=row + 1, column=col + 1).value = xlrd_worksheet.cell_value(row, col)

    return openpyxl_book


if __name__ == '__main__':
    workbook = open_excel_without_workbook_part('file-without-valid-workbook.xlsx')

    sheet = workbook.worksheets[0]
    for row in sheet.rows:
        print '\t'.join([cell.value for cell in row])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法在单个 Excel 文件中使用 2 个单独的工作簿

有没有办法使用openpyxl或xlswriter保护工作簿?

有没有办法导出excel工作簿中的单个工作表以使用pandas分隔csv文件?

有没有办法检查不可见的打开的Excel工作簿?

有没有办法使用Python openpyxl从excel读取持续时间类型字段?

有没有办法读取OSX .numbers文件?

有没有办法共享 Excel VB 宏作为所有未来工作簿的工具?

linux有没有办法用密码读取新的adobe文件?

在Excel中通过vba调用python程序时,有没有办法引用活动工作簿?

有没有办法在打开的工作簿上导入 VBA 模块?

有没有办法用熊猫读取 BeautifulSoup 输出来读取表格?

有没有办法批量读取redis列表?

有没有办法让 findstr 从后到前读取?

有没有办法读取clojure文件中的所有表格?

有没有办法让硒异步工作?

有没有办法在python中将数据追加到excel文件而不读取其内容?

有没有办法在工作簿中解锁工作表时显示错误/提醒消息?

有没有办法用“WITH”语句获得输出?

有没有办法用Purescript解析XML?

有没有办法用 Webpack 清除 FontAwesome?

有没有办法用javascript清除页面?

有没有办法用apexp使用regexp?

有没有办法用MongoDB替换Many()?

有没有办法用 == 测试 nil

有没有办法用belongsToMany构建hasManyTrough?

有没有办法用WebAPI生成Urls?

有没有办法用 Python 修改 JSON?

有没有办法用 SpringBoot 启动 FXGL?

在使用c ++读取文件时,有没有办法忽略文件字符的结尾?