正在将openpyxl格式从文本设置为数字



我有一个excel文件,我正在使用openpyxl输入一些数据。数据当前正以文本形式输入。我正在尝试做一个循环,这样我的matrix就可以输入到excel数字类型中。矩阵被添加到excel中没有问题,但是值被存储为文本而不是数字。我该怎么改?我以为将number_format设置为0会起作用,但似乎没有。

for row_num, row in enumerate(matrix, 3):
for col_num, item in enumerate(row, col_start - 12):
ws.cell(column=col_num, row=row_num, value=item).number_format = "0"
wb.save(excel_file_path_from_db)

该矩阵由下拉选项中的用户输入值组成:

<td id="row_1_col_3">
<center>
<select style="background-color: #ceedd0;" id="row_1_select_3" onchange="changeSelect('row_1','_col_3','_select_3')" name="filter_for">
<option value="1">1</option>
<option value="P">P</option>
<option value="0">-</option>
<option selected="selected" value="0">0</option>
</select></center> 

然后我通过以下方式访问值:

matrix = ast.literal_eval(list(request.GET)[0])

我的猜测是item的数据类型是String或更通用的类型。我建议:

def is_number(s):
try:
float(s)
return True
except ValueError:
return False
for row_num, row in enumerate(matrix, 3):
for col_num, item in enumerate(row, col_start - 12):
if is_number(item):
ws.cell(column=col_num, row=row_num, value=float(item))
ws.cell(column=col_num, row=row_num).number_format = "0"
else:
ws.cell(column=col_num, row=row_num, value=item)
wb.save(excel_file_path_from_db)

最新更新