Python openpyxl更改同一文件的未更改工作表中列的编号格式
我注意到,当我使用openpyxl向.xlsx文件添加额外的工作表时,它会自动更改该文件中预先存在的工作表中列的编号格式 按时间顺序,问题如下: 1) 我使用“时间戳”格式手工记录一些感兴趣的事件的日期和时间,在这张预先存在的表格的一列中。我通过Excel设置了到目前为止的列格式(格式代码“MM/DD/YYYY HH:MM:SS”) 2) 我与熊猫一起阅读了这张“预先存在”的工作表,一切都很顺利(即熊猫可以阅读这些日期/时间): 3) 我进行一些计算,并将这些其他计算存储在同一文件('myFile.xlsx')的新工作表中,并保存更改:Python openpyxl更改同一文件的未更改工作表中列的编号格式,python,excel,pandas,openpyxl,datetime-format,Python,Excel,Pandas,Openpyxl,Datetime Format,我注意到,当我使用openpyxl向.xlsx文件添加额外的工作表时,它会自动更改该文件中预先存在的工作表中列的编号格式 按时间顺序,问题如下: 1) 我使用“时间戳”格式手工记录一些感兴趣的事件的日期和时间,在这张预先存在的表格的一列中。我通过Excel设置了到目前为止的列格式(格式代码“MM/DD/YYYY HH:MM:SS”) 2) 我与熊猫一起阅读了这张“预先存在”的工作表,一切都很顺利(即熊猫可以阅读这些日期/时间): 3) 我进行一些计算,并将这些其他计算存储在同一文件('myFi
from openpyxl import *
writer = pd.ExcelWriter(myPath + 'myFile.xlsx', engine = 'openpyxl')
writer.book = book
New_df.to_excel(writer, index = False, sheet_name='new-sheet')
writer.save()
writer.close()
4) 一旦我尝试重复步骤2,pandas就无法正确读取我列中的日期时间:
print(df['timeStampUTC'])
timeStampUTC
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
Name: timeStampUTC, dtype: float64
需要注意的是,当我用Excel重新打开“myFile.xlsx”时,该列显示正常。当我将列的数字格式重新设置为Date(格式代码“MM/DD/YYYY HH:MM:SS”)时,pandas再次能够读取时间戳
欢迎任何能让我重读熊猫专栏的内容。
谢谢
Juancho Gossn可能的部分解决方案: 打开工作簿时使用只读。将输出保存到新的excel文件中。 工作簿=openpyxl.load\u工作簿(filename='name.xlsx',只读=True)
我的问题是:2个字体单元格变为1个字体单元格。只需使用openpyxl中的UTIL即可从工作表转换为数据框。无需保存并重新打开。都在文档中。好的,谢谢Charlie,虽然这不是我的解决方案。尽管我通过其他方式避开了这个问题,但我真的很想知道openpyxl是否有一种方法可以使它不会像目前那样随意改变列格式。谢谢“列格式”实际上并不存在。您必须始终格式化每个单元格。好的,对不起,我指的是单元格格式。
print(df['timeStampUTC'])
timeStampUTC
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
Name: timeStampUTC, dtype: float64