在 Excel 张中操作数据帧输出

Manipulate dataframe output in Excel sheets

早上好,

我有一个数据框,我根据特定列中的交易簿将其分成多个工作表。导出到单独的工作表后,我想自动调整数据、隐藏网格线并将数据居中对齐并冻结特定单元格上的窗格($B$2)。导出已完成,但 Excel 中的格式不起作用,我卡在自动调整上:

dfTemp = {  'Trading_Book': ['A', 'A', 'A',
                 'B', 'B', 'B',
                 'C', 'C', 'C',
                 ],
        'Client': ['AA', 'AA', 'AA',
                 'BB', 'BB', 'BB',
                 'CC', 'CC', 'CC',
                 ],
      }
dfTemp = pd.DataFrame.from_dict(dfTemp)
print(dfTemp)

# Export each Trading Books data to a separate sheet in Excel
excel_writer = pd.ExcelWriter('C:\EOM_ML_201901\outputs\Excel_Data.xlsx')
dfTemp.to_excel(excel_writer, sheet_name='Consolidated')
# Get Book List
Books = dfTemp['Trading_Book'].unique().tolist()
# For each book send to Excel sheet
for myname in Books:
    mydf = dfTemp.loc[dfTemp.Trading_Book == myname]
    mydf.to_excel(excel_writer, sheet_name=myname)
    # Autofil columns
    for column in mydf:
        column_length = max(mydf[column].astype(str).map(len).max(), len(column))
        col_idx = mydf.columns.get_loc(column)
        excel_writer.sheets[myname].set_column(col_idx, col_idx, column_length)
excel_writer.save()

如有任何帮助,我们将不胜感激。

当您写入文件时,可以直接从 pandas 完成冻结窗格:

mydf.to_excel(excel_writer, sheet_name=myname, freeze_panes=(x,y))

根据 documentation here.

将 (x,y) 替换为您要冻结的行和列

不幸的是,同一文档没有显示直接从 pandas 隐藏网格线的方法。但是,您可以调用 xlsxwriter 作为用于编写的引擎:mydf.to_excel(excel_writer, sheet_name=myname, engine='xlsxwriter')

那么您应该可以按照 accepted answer here 隐藏网格线。

对于居中,您可以使用 xlsxwriter 包中的这两个命令,具体取决于您想要水平居中还是垂直居中:

cell_format.set_align('center')
cell_format.set_align('vcenter')

Documentation here 来自 xlsxwriter,使用 ctrl-f 'align' 跳到你想要的部分。

祝你好运!