使 pandas to_excel 停止样式化

Make pandas to_excel stop styling

我正在使用 Pandas 编辑其他人正在使用的 Excel 文件。但是当我使用 df.to_excel 保存它时,Pandas 向 header 和索引中的单元格添加了一个难看的黑色边框。我希望它以纯格式编写,如果我在 Excel 中打开它,CSV 文件的外观。如果使用与读入时相同的样式写回就更好了

有没有办法让 df.to_excel 不带样式或使用原始样式编写?

谢谢。

试试这个技巧:

import io

pd.read_csv(io.StringIO(df.to_csv()), header=None)
  .to_excel("output.xlsx", header=None, index=None)

如果你仍然想要索引和 header 值 - 但没有样式,你可以使用这个(需要 openpyxl):

def insert_dataframe(df,sheet,start_row=1,start_col=1):
"""inserts a dataframe into an openpyxl sheet at the given (row,col) position.

Parameters
----------
df : pandas.Dataframe
    Any dataframe
sheet : openpyxl.worksheet.worksheet
    The sheet where the dataframe should be inserted
start_row : int
    The row where the dataframe should be insterted (default is 1)
start_col : int
    The column where the dataframe should be insterted (default is 1)
"""

#iterate dataframe index names and insert   
for name_idx, name in enumerate(df.index.names):

    label_col=start_col+name_idx
    sheet.cell(row=start_row, column=label_col, value=name)
    
    #for each name iterate values as rows in the current index name column
    value_row=start_row+1
    for i_value in list(df.index.values):
        if isinstance(df.index, pd.MultiIndex):
            val=i_value[name_idx]
        else:
            val=i_value
        sheet.cell(row=value_row, column=label_col, value=val)
        #goto next row
        value_row+=1

row_idx=0
col_idx=label_col+1


#insert values
for label,content in df.items():
    sheet.cell(row=start_row, column=col_idx, value=label)
    for row_idx,value_ in enumerate(content):
        sheet.cell(row=start_row+row_idx+1, column=col_idx, value=value_)
    col_idx+=1

要点:https://gist.github.com/Aer0naut/094ff1b6838b2177a4222591ace8f6bf