使用Pandas+xlsxwriter删除索引上的边框



xlsxwriter似乎会自动在pandas df索引周围添加边框。写入数据后,如何删除边框?当我尝试使用之类的东西时

worksheet.set_column('A:A', None, test_format) #test_format just makes borders = 0 

它要么删除值,要么什么都不做。。。

下面是一个设置示例:

import xlsxwriter
import pandas as pd
# Create a test df
df = pd.DataFrame({'Name': ['Tesla','Tesla','Toyota','Ford','Ford','Ford'],
'Type': ['Model X','Model Y','Corolla','Bronco','Fiesta','Mustang']})
df = df.set_index('Name').groupby('Name').apply(lambda x:x[:]) 

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='test', startrow=1, merge_cells=True)
## Get the xlsxwriter objects from the dataframe writer object. Setting up xlsxwriter for formatting
workbook = writer.book
worksheet = writer.sheets['test']

writer.save()

在将df写入excel后,有什么方法可以应用格式设置吗?或者更改索引格式?

似乎xlsxwriter会自动在pandas df索引周围添加边框。

严格来说,Pandas使用xlsxwriter(或openpyxl或xlwt(添加边框。

当我尝试使用类似。。。它要么删除这些值,要么什么都不做。

这是因为已经存在的单元格格式会覆盖列格式。

通常的解决方法是关闭标题或索引,并在XlsxWriter文档中指定自己的示例。

然而,在您的情况下,您有一个带有合并单元格的多索引,因此复制起来有点困难。

对于那些希望通过多索引解决此问题的人,可以使用以下内容:

# changes row index format, 4 denotes the start row, 0 denotes the column
for row_num, value in enumerate(df.index.get_level_values(level=1)):
worksheet.write(4+row_num , 0, value, FORMAT_OF_CHOICE)

来源:https://stackoverflow.com/a/72419827/11770286

import pandas as pd
pd.io.formats.excel.ExcelFormatter.header_style = None
df.to_excel('')

Pandas 2.0.1

import pandas as pd
pd.io.formats.excel.ExcelFormatter.header_style = None

不起作用:

AttributeError: module 'pandas.io.formats' has no attribute 'excel'