使用python-Openpyx在Excel工作表中写入时,数字将自动转换为日期格式

2024-05-23 13:47:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在对我的一份报告进行自动化处理。但是,当我使用openpyxl将值从列表(即“summary”)复制到excel中名为“summary”的一张表时。它会自动将数字转换成日期。当我在excel中选中“格式单元格”时,单元格将转换为自定义字段

我试过代码cell.number_format='General'。但它也不起作用

“summary”是一个列表,我需要在名为“summary”的excel工作表中编写

>>>summary

[11, '19', 322, 2460, 317, 2413, 318, 4, 9, 47, 2370, 2370, 0, 0, '2455']

我正在执行的完整代码:

wb_obj=openpyxl.load_workbook('test.xlsx')

sheet_sumary=wb_obj['Summary']

max_col1 = sheet_sumary.max_column

m_row1 = sheet_sumary.max_row

for j in range(1,max_col1+1):

    cell=sheet_sumary.cell(row=m_row1+1,column=j)

    cell.value= (summary[j-1])

    cell.number_format='General'

excel中的预期结果:

Date    Trace collection Hour   Total SMK Nodes Total SMK Cells Total Nodes TA Available    Total cells TA Available

3-Sep-19    19  322 2460    317 2413

excel中的实际结果:

Date    Trace collection Hour   Total SMK Nodes Total SMK Cells Total Nodes TA Available    Total cells TA Available

11/Jan/00   19  17/Nov/00   25/Sep/06   12/Nov/00   9/Aug/06

上面是一个列的例子,我们可以看到我的数据被转换成了一些任意的日期格式,比如“Total SMK Nodes”列,它的值应该是322,但是这个数字在写入excel时被转换成'17/Nov/00'


Tags: 列表cell数字summaryexcelmaxnovsheet
1条回答
网友
1楼 · 发布于 2024-05-23 13:47:56

这是一个众所周知的PITA,Excel坚持要强加给它的用户。你可以做一些事情来减轻这种行为

  1. 看起来您的Summary行示例有一个intstr值的奇怪组合。我建议在设置单元格时将这些值转换为适当的值
  2. 不要使用常规格式。如果需要数字单元格,请使用实际的数字格式类General是Excel的默认值,它可以做任何它想做的事情

相关问题 更多 >