这段代码实际上工作正常,但显示的输出不同,因为excel表存在于某些值中,如int,float但在运行脚本后输出显示如下所示。我不需要带有该值的.0。我想要输入中存在的确切值。
Rows Column 2 6
a cd 21
b cd 11 4
c cd 22 3
s cd 4.1 2
e cd 4 1
这是显示错误值的代码
import xlrd
import xlwt
workbook=xlrd.open_workbook("xxx.xls")
sh=workbook.sheet_by_index(0)
print sh.nrows
print sh.ncols
n=0
i=0
file=open("xx.txt","w")
for n in range(sh.nrows):
for i in range(sh.ncols):
data =sh.cell_value(n,i)
print data,
file.write(str(data)+" ")
print
file.write("\n")
请帮我解决这个问题。我需要的是excel中应该存在的任何东西。 这是上面代码的输出
答案 0 :(得分:0)
Excel将所有数字视为浮动。因此xlrd
将所有这些作为浮点数读取并按原样提供。
一个简单的解决方法是检查cell
是否有float
数据类型&没有浮动值,然后将其转换为int
类型。
if isinstance(cell, float) and cell.is_integer():
cell = int(cell)
所以,你的代码会变成这样的东西。
import xlrd
workbook = xlrd.open_workbook('data.xls')
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows
num_cells = worksheet.ncols
curr_row = -1
with open("xxx.txt", "w") as fh:
for row in range(num_rows):
for column in range(num_cells):
data = worksheet.cell_value(row, column)
if isinstance(data, float) and data.is_integer():
data = int(data)
fh.write(str(data) + " ")
fh.write("\n")
输出将是:
Rows Column 34.5 6
a cd 54 5
b cd 22.3 4
c cd 56 3
s cd 677.1 2
e cd 32 1
注意:如果您的输入文件包含6.0
等浮动数字,默认情况下它们将转换为6
。