xlrd 将数字读取为字符串

xlrd read number as string

我试图从 xls 文件中读取一个长数字 (6425871003976),但 python 在将其读取为数字而不是字符串 (6.42587100398e+12) 之前一直在中继它。有什么方法可以直接将它作为字符串读取,即使在 xls 文件中它是一个数字?

values = sheet.row_values(rownum)

在 values 中它显示正确 (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')

这是一个例子,它带来了一个单元格的值(在你的例子中它是一个 int),你需要使用 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)

这是相同的值。唯一不同的是如何将值打印到屏幕上。你得到的科学记数法是因为打印数字 str 被调用了。当您打印值列表时,列表的内部 __str__ 方法对其每个元素调用 repr。请尝试 print(repr(values[0]))

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

%d 用于打印整数值