如何从 excel sheet 中提取值,其中很少行被格式化为数字,但很少是 Python 中的文本

How to extract values from excel sheet where few rows are formatted as number but few are text in Python

我有一个 excel sheet,其中一些行的格式为 number,但一些行的格式为 text。我有 python 脚本,它读取每一行并将其转换为 json 并进行处理。 Excel sheet 如下所示:

在上图中,我们可以看到第 98、99、100、101、102 列第 1 列中的值被格式化为文本,而第 103、104 行第 1 列中的值被格式化为数字。我有以下 python 代码来访问它:

import xlrd
wb = xlrd.open_workbook("file.xlsx")

sheet = wb.sheet_by_index(4)

for i in range(4, 185): #from 5th row to 186th row
    data = dict()
    print(str(sheet.cell_value(i, 0)))
    data['ProductNumber'] = str(sheet.cell_value(i, 0))

我必须将值保存在 str 中,因此我使用了 str。但我得到的结果低于第 98 到 104 行

ROW     Value Extracted
98          907
99          088
100         019
101         274
102         905
103         290.0
104         971.0

以上结果对于第 98 到 102 行看起来不错,但对于第 103、104 行是错误的。应该只有 290 & 971。为此,我在 str 之前放了一个 int,如下所示:

str(int(sheet.cell_value(i, 0)))

现在使用上面的结果如下所示:

ROW     Value Extracted
98          907
99          88
100         19
101         274
102         905
103         290
104         971

这又是错误的,因为第 99 行和第 100 行的值应该是 088 & 019 而不是 88 & 19。我该如何解决这个问题。有没有我可以使用的支票可以帮助我做出决定。我正在使用 xlrd python 模块。

对于您的示例数据集,这可行:

str(int(sheet.cell_value(i,0))).zfill(3)

使用pandas是另一种选择,请使用下面的代码进行转换。变量 strJson 在这里保存完整的 Json 字符串,如果您在数据中添加小数点,它会自动接受它,如果没有小数点,则相同的值将被添加到 json .

import pandas
strDataDump=pandas.read_excel('C:\Temp\Python Projects\data.xlsx', sheet_name='Sheet1')
strJson = strDataDump.to_json()
print('JSON Result:\n', strJson)