8

嗯,我有一个问题,我觉得我已经回答了好几次,从我在这里找到的。但是,作为一个新手,我无法真正理解如何执行一个非常基本的操作。

事情是这样的:

  • 我有一个.xls,当我使用 xlrd 来获取我正在使用的值时 sh.cell(0,0)(假设 sh 是我的工作表);

  • 如果单元格中的内容是字符串,我会得到类似的东西text:u'MyName',我只想保留字符串'MyName'

  • 如果单元格中的内容是一个数字,我会得到类似的东西number:201.0,我只想保留整数201

如果有人能告诉我我应该只提取值,按我想要的格式,谢谢。

4

4 回答 4

16

sh.cell(x, y) 返回 Cell 类的一个实例。当您打印 sh.cell(x,y) 时,您将返回该类的repr函数(因此它会打印 type:value)。

你应该试试:

cell = sh.cell(x,y)
print(cell.value)

我无法对此进行测试,因为我没有 xlrd,但是,我认为它会根据文档工作:https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#sheet。细胞级

于 2012-01-18T12:16:48.157 回答
3

您也可以只使用 xlrd 提取值,而不是返回完整的 Excel 单元格:

book = xlrd.open_workbook('example.xls')
first_sheet = book.sheet_by_index(0)
print first_sheet.row_values(0)

获取第一张工作表中第一行的值。

您可以将切片与 row_values 一起使用(对于列也是如此)。因此,要从整个工作表中获取值:

cells = []
for i in range(first_sheet.nrows):
    cells.append(first_sheet.row_values(rowx=i,start_colx=0,end_colx=None))

使用 xlrd 可能有更优雅的方式——但这对我有用。

于 2015-08-27T10:42:50.720 回答
1

这将为您提供 Excel 中单元格内容的值。

    var = sh.cell(x,y)
    print var.value

但是这个数据的类型仍然是'unicode'。转换成字符串(ascii):

    var.value.encode('ascii','ignore')
于 2017-05-09T10:27:56.040 回答
0

对此的正确答案是简单地使用该Cell.value功能。这将根据单元格包含的内容返回一个数字或 Unicode 字符串。

于 2017-03-30T17:24:01.730 回答