我正在使用"openpyxl";将数组放入excel文件中,供用户在django网站上下载。
使用以下循环,数据进入excel fine:
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)
wb.save(excel_file_path_from_db)
我的问题是,当数据进入excel时,它不是数字格式的。我想这可能是因为我通过从用户输入中获取atix值
matrix = ast.literal_eval(list(request.GET)[0])
print(matrix)
有什么想法可以让我的矩阵以数字格式进入excel文件吗?
听起来像是有字符串值。cell((函数将设置生成的openpyxl.cell.cell.cell对象的data_type属性,以尝试与之匹配。
如果将cell((的输出分配给变量(例如cell(:cell = ws.cell(column=col_num, row=row_num, value=item)
然后print(cell.data_type)
,你可能会得到";t〃;用于文本。
调用ws.cell((:时,应该能够在item
上使用强制转换运算符
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=float(item))
wb.save(excel_file_path_from_db)
另一个对我有效的选择:
for row_num, row in enumerate(matrix, 3):
for col_num, item in enumerate(row, col_start - 12):
cell = ws.cell(column=col_num, row=row_num, value=item)
cell.data_type = "n"
wb.save(excel_file_path_from_db)