使用openpyxl将数组添加到excel中(格式问题)



我正在使用"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)

最新更新