Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 无法使用有效的日期格式写入Excel工作表_Python_Excel_Pandas_Dataframe - Fatal编程技术网

Python 无法使用有效的日期格式写入Excel工作表

Python 无法使用有效的日期格式写入Excel工作表,python,excel,pandas,dataframe,Python,Excel,Pandas,Dataframe,背景: 1,使用Python执行SQL,并使用Pandas将输出保存为数据帧格式 2,将输出作为一个新工作表附加到现有excel文件中 下面是我的代码: from pandas import ExcelWriter sql_20 = '''''' db = cx_Oracle.connect('*****', '*******', '**********') conn = db.cursor() conn.execute(sql_20) df = pandas.read_sql_query

背景:

1,使用Python执行SQL,并使用Pandas将输出保存为数据帧格式

2,将输出作为一个新工作表附加到现有excel文件中

下面是我的代码:

from pandas import ExcelWriter

sql_20 = ''''''

db = cx_Oracle.connect('*****', '*******', '**********')
conn = db.cursor()

conn.execute(sql_20)
df = pandas.read_sql_query(sql_20,db)
print(df)

with ExcelWriter('GUCS6J-Job Data.xlsx', mode='a') as writer:
    df.to_excel(writer, sheet_name=str(20))
writer.save()

数据库:Oracle

列A数据类型:日期

来自Oracle的SQL结果:

从Python打印数据帧:

到目前为止还不错


但我在excel工作表中得到的是:

我很好奇为什么我会得到“###################”这个单元格在excel中的值是-693594


我希望我能得到与excel文件中的DataFrame打印相同的结果。

请参考这两个链接,看看它是否能解决您的问题


我认为您需要在ExcelWriter()中添加日期格式。

对于
df['A']
,数据类型是什么。我使用print(type(df['A'])
pd.to_datetime('01-Jan-01')
returns
2001-01-01
将您的日期转换为有效的熊猫日期时间
df['date']=pd.to_datetime(df['date'])
在我的机器上测试过,我可以在excel中查看。我只是好奇为什么您需要从熊猫导入ExcelWriter?您应该已经在更早的时候导入了pandas(因为您在更早的时候创建了一个数据框),并且您应该能够使用
df.to_excel
,而无需任何额外的导入。您好@datanoveler,在我们的oracle数据库中,“01-Jan-01”是0001-01-01。熊猫正确读取输出,因为数据框显示“0001-01-01 00:00:00”。我将在输出中有数百列,我不想手动强制转换每一列。欢迎使用StackOverlfow!请编辑您的答案,以包含链接页面提示的示例,因为它们适用于OP的代码。也许重写他们的代码,加入你建议的更改?这将使您的答案对以后可能有此问题的其他人更有用。我想我找到了原因