Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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_Format_Xlsxwriter - Fatal编程技术网

Python 如何将表格保存到excel,然后格式化?

Python 如何将表格保存到excel,然后格式化?,python,excel,pandas,format,xlsxwriter,Python,Excel,Pandas,Format,Xlsxwriter,上述代码预计将生成一个格式化的excel表格,其中B列和B列具有蓝色背景,其他方面在格式_bc中指定。 相反,我收到了一个如下图所示的文件 有没有一种方法可以将数据框写入带有格式的excel工作表?不幸的是,正如这里看到的,无法使用XlsxWriter格式化date和datetime值 您可以改为添加df=df.astype(str),将数据帧格式从date/datetime更改为string import pandas as pd from datetime import datetime

上述代码预计将生成一个格式化的excel表格,其中B列和B列具有蓝色背景,其他方面在格式_bc中指定。 相反,我收到了一个如下图所示的文件


有没有一种方法可以将数据框写入带有格式的excel工作表?

不幸的是,正如这里看到的,无法使用
XlsxWriter
格式化
date
datetime

您可以改为添加
df=df.astype(str)
,将数据帧格式从
date
/
datetime
更改为
string

import pandas as pd

from datetime import datetime, date

df = pd.DataFrame({'Date and time': [datetime(2015, 1, 1, 11, 30, 55),
                                 datetime(2015, 1, 2, 1,  20, 33),
                                 datetime(2015, 1, 3, 11, 10    ),
                                 datetime(2015, 1, 4, 16, 45, 35),
                                 datetime(2015, 1, 5, 12, 10, 15)],
                   'Dates only':    [date(2015, 2, 1),
                                 date(2015, 2, 2),
                                 date(2015, 2, 3),
                                 date(2015, 2, 4),
                                 date(2015, 2, 5)],
               })

writer = pd.ExcelWriter("pandas_datetime_format.xlsx",
                    engine='xlsxwriter',
                    datetime_format='mmm d yyyy hh:mm:ss',
                    date_format='mmmm dd yyyy')

df.to_excel(writer, sheet_name='Sheet1')

workbook  = writer.book
worksheet = writer.sheets['Sheet1']

format_bc = workbook.add_format({
    'font_name': 'Arial',
    'font_size' : 14,
    'font_color': 'white',
    'bold': 0,
    'border': 1,
    'align': 'left',
    'valign': 'vcenter',
    'text_wrap': 1,
    'fg_color': '#005581'})
worksheet.set_column('B:C', 20, format_bc)
writer.save()
产出:

请注意,如果希望使用新格式覆盖标题,请在代码开头添加:

df = pd.DataFrame(
    {
        'Date and time': [
            datetime(2015, 1, 1, 11, 30, 55),
            datetime(2015, 1, 2, 1,  20, 33),
            [ ... ]
        ],
        'Dates only': [
            date(2015, 2, 1),
            date(2015, 2, 2),
            [ ... ]
        ]
    }
)

df = df.astype(str)

writer = pd.ExcelWriter("pandas_datetime_format.xlsx",
                        engine='xlsxwriter',
                        [ ... ])

[ ... ]
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None