[英]Adding array into excel using openpyxl (formatting issue)
我正在使用“openpyxl”将数组放入 excel 文件中,供用户在 django 站点上下载。
数据使用以下循环进入 excel:
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() function 将设置结果 openpyxl.cell.cell.Cell object 的 data_type 属性以尝试匹配它。
如果将 cell() 的 output 分配给变量(例如单元格): 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.