6

我正在尝试使用 python 打开一个 excel .xlsx 文件,但我无法找到一种方法,我尝试使用 pandas 但它想要使用一个名为 NumPy 的库我尝试安装 numpy 但它仍然可以找不到 numpy。

我也尝试过使用 xlrd 库,但我得到以下回溯:

Traceback (most recent call last):
  File "C:\test.py", line 3, in <module>
    book = open_workbook('test.xlsx')
  File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 370, in open_workbook
    biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
  File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1323, in getbof
    raise XLRDError('Expected BOF record; found 0x%04x' % opcode)
XLRDError: Expected BOF record; found 0x4b50

我认为这是因为 XLRD 无法读取 .xlsx 文件?

有人有什么想法吗?

编辑:

import csv
with open('test.csv', 'rb') as csvfile:
    data = csv.reader(csvfile, delimiter=',')
    for row in data:
        print "------------------"
        print row
        print "------------------"
        for cell in row:
            print cell
4

3 回答 3

11

也许您可以将 .xlsx 导出到 .csv 文件?

那你可以试试:

import csv
with open('file.csv','rb') as file:
    contents = csv.reader(file)
    [x for x in contents]

这可能有用: http ://docs.python.org/2/library/csv.html#csv.reader

希望有帮助!

编辑:

如果你想定位一个特定的单元格,比如 F13,你可以制作一个像矩阵一样的嵌套列表,它们引用每个元素:

import csv
with open('file.csv','rb') as file:
    contents = csv.reader(file)
    matrix = list()
    for row in contents:
        matrix.append(row)

然后使用 F13 访问matrix[5][12]

PS:我没有测试这个。如果“行”是一个将每个单元格作为一个元素的列表,则继续将所有行附加到矩阵中,因此第一个索引是行号,第二个是列号。

于 2013-08-30T12:45:58.987 回答
2

看来您使用的是 Linux 发行版。我也遇到了同样的问题,“xlwt”库不会发生这种情况,而只有“xlrd”才会发生这种情况。我所做的不是解决此问题的正确方法,但它暂时使事情正常运行,希望很快能得到该问题的答案;我已经在 Windows 上安装了“xlrd”,并将文件夹粘贴到 Linux 中我的python代码所在的目录并且它有效。

于 2013-09-14T08:55:45.233 回答
2

因为我知道其他人也会读到这篇文章——

您可以安装以下模块(它不会自动安装) https://pypi.python.org/pypi/openpyxl

您可以阅读以下内容以了解如何使用它

https://automatetheboringstuff.com/chapter12/

于 2016-06-26T22:48:22.497 回答