Python xlrd 读取单元格返回空值

1 投票
1 回答
1792 浏览
提问于 2025-04-18 05:18

我在用Python的xlrd库读取一个xls文件时遇到了一个奇怪的问题。问题是,xlrd读取的很多单元格都是空白的(无论是打印出来还是写入文件),尽管这些单元格里其实有一些(浮点数和数字)值。这是我使用的代码:

import xlrd
workbook = xlrd.open_workbook('299360.xls')
worksheet = workbook.sheet_by_name('sheet1')
num_rows = worksheet.nrows - 1
num_cells = worksheet.ncols - 1
curr_row = -1
while curr_row < num_rows:
    curr_row += 1
    row = worksheet.row(curr_row)
    print 'Row:', curr_row
    curr_cell = -1
    while curr_cell < num_cells:
        curr_cell += 1
        # Cell Types: 0=Empty, 1=Text, 2=Number, 3=Date, 4=Boolean, 5=Error, 6=Blank
        cell_type = worksheet.cell_type(curr_row, curr_cell)
        cell_value = worksheet.cell_value(curr_row, curr_cell)

        print ' ', cell_type, ':', cell_value

奇怪的是,如果我对xls文件中的任何单元格进行更改、添加或编辑,然后再保存一次,我就能正确获取所有单元格的值。请帮我解决这个问题。如果有人对这个xls文件感兴趣,这里有一个链接

1 个回答

0

这个问题虽然老了,但如果有人通过网络搜索来到这里,可以看看:

记住,xlrd库中获取单元格的顺序是先行后列,也就是说是行在前,列在后。而在PHP中,获取单元格的顺序是先列后行。在Python中,如果你看到cell(1,116),这表示第1行第116列,通常这个位置是不会有数据的。

另外,xlrd中的行索引是从0开始的。

可以参考这个链接了解更多信息:http://www.lexicon.net/sjmachin/xlrd.html

撰写回答