xlwings vs pandas 具有多索引数据帧的本机导出:如何协调?

xlwings vs pandas native export with multi index dataframes: how to reconcile?

我将从一张图片开始,因为它清楚地解释了使用 pandas native export 和 xlwings

导出 multindexes 的问题

本质上,我希望用 Xlwings 完成“Pandas 本机”结果 [正确导出到 excel] 的多索引,因为我还有许多其他功能 XlWings 可以做而其他人不能(即使使用 ExcelWriter 之类的也不行,因为我必须清除 sheet 并且我在同一个 [ 中插入了一个非 python 的东西=28=]初始化时也会被清除)

使用的代码:

import pandas as pd
import numpy as np
import xlwings as xw
import os

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
           ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]

tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
s = pd.DataFrame(np.random.randn(8, 8), index=index).transpose()
print(s)

# EXPORT

filename = 'format_excel_export.xlsx'
s.to_excel(filename)

outpath = os.path.join(os.path.abspath(os.path.dirname(__file__)), filename)
os.path.sep = r'/'
wb = xw.Workbook(outpath)

xw.Range('Sheet1', 'A13').value = s

您可以实现自定义转换器,按照 Pandas 的方式对其进行格式化,请参阅 here

但是,从 v0.7.2 开始,xlwings 还不支持加粗字体、合并单元格和单元格边框。您可以通过回退到 pywin32(在 Windows 上)来解决这个问题,请参阅 here.

本质上,您的自定义转换器需要覆盖 write_value 方法,请参阅 here

在某些时候将它构建到库中确实有意义,所以我打开了一个问题,请参阅 here