Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python openpyxl更改同一文件的未更改工作表中列的编号格式_Python_Excel_Pandas_Openpyxl_Datetime Format - Fatal编程技术网

Python openpyxl更改同一文件的未更改工作表中列的编号格式

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

我注意到,当我使用openpyxl向.xlsx文件添加额外的工作表时,它会自动更改该文件中预先存在的工作表中列的编号格式

按时间顺序,问题如下:

1) 我使用“时间戳”格式手工记录一些感兴趣的事件的日期和时间,在这张预先存在的表格的一列中。我通过Excel设置了到目前为止的列格式(格式代码“MM/DD/YYYY HH:MM:SS”)

2) 我与熊猫一起阅读了这张“预先存在”的工作表,一切都很顺利(即熊猫可以阅读这些日期/时间):

3) 我进行一些计算,并将这些其他计算存储在同一文件('myFile.xlsx')的新工作表中,并保存更改:

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