繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM