XLrd将数字读取为字符串

8

我想从一个xls文件中读取一个长数字(6425871003976),但是Python在读取之前会将其截断,然后将其作为数字而不是字符串读取(6.42587100398e+12)。是否有任何方法可以直接将其作为字符串读取,即使在xls文件中它是一个数字?

values = sheet.row_values(rownum)

在值中它显示正确(6425871003976.0),但是当我尝试使用values [0]时,它已经切换到不正确的值。

解决方案:

这是我使用repr()的解决方案:

if type(values[1]) is float:  
    code_str = repr(values[1]).split(".")[0]
else:
    code_str = values[1]
product_code = code_str.strip(' \t\n\r')

数字在Excel表格中是如何显示的?它会显示为6.42587100398e+12(字符串)或6425871003976(整数)。请问您能否将您的工作也添加到问题中? - Sujay Narayanan
这个数字看起来像6.42587100398e+12。 - Virgil Balibanu
3个回答

3

这是相同的值,不同的是如何将该值打印到屏幕上。你看到的科学计数法是因为对数字调用了 str 方法。当你打印值列表时,列表内部的 __str__ 方法会对每个元素调用 repr 方法。可以尝试使用 print(repr(values[0]))


2

使用print "%d" %(values[0])

%d用于打印整数值


1

这是一个例子,它展示了如何获取单元格的值(在您的情况下是整数),您需要使用str函数将其转换为字符串。

from openpyxl import load_workbook
wb = load_workbook(filename='xls.xlsx', read_only=True)
ws = wb['Sheet1']
for row in ws.rows:
    for cell in row:
        cell_str=str(cell.value)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接