有没有一种方法可以使用pandas.ExcelWriter自动调整Excel列宽?

206

我被要求生成一些Excel报告。目前我在处理数据时非常依赖于pandas,因此自然希望使用pandas.ExcelWriter方法来生成这些报告。但是,固定的列宽度是个问题。

到目前为止,我的代码相当简单。假设我有一个名为df的数据框:

writer = pd.ExcelWriter(excel_file_path, engine='openpyxl')
df.to_excel(writer, sheet_name="Summary")
我查看了Pandas文档,但并没有找到设置列宽的选项。是否能自动调整列宽以适应数据?或者我可以在生成的xlsx文件上进行调整吗? (我使用OpenPyXL库生成.xlsx文件,不知道这是否有影响。)

1
目前看起来似乎不可能,可以在 Github 上开一个问题以进行增强(也许还有一个 PR?)。看起来并不难做。 - Jeff
谢谢Jeff,我已经提交了这个问题。我不确定是否有时间真正深入pandas代码库来解决它,但你永远不知道 :) - badideas
是的...看到你的问题了...如果需要帮助,请在问题下发表评论!(基本上需要将可选参数传递给“to_excel”,可能是包含列标题样式元素的“col_style=dict”(而不是默认的“header_style”,似乎现在已经硬编码) - Jeff
21个回答

0
注意,在之前的回答中有很多过时的方法和不太实用的支撑方式。
FutureWarning: save is not part of the public API, usage can give unexpected results and will be removed in a future version
  writer.save()

我找到了一个简单的解决方案来解决这个古老但重要的问题:
from UliPlot.XLSX import auto_adjust_xlsx_column_width

with pd.ExcelWriter("example.xlsx") as writer:
    df.to_excel(writer, sheet_name="MySheet")
    auto_adjust_xlsx_column_width(df, writer, sheet_name="MySheet", margin=1)

那就是你所需要的一切

决定不在我手上,所以我必须将链接发布给作者,你可以感谢他


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接