python - 有没有办法使用 pandas.ExcelWriter 自动调整 Excel 列宽?

标签 python excel pandas openpyxl

我被要求生成一些 Excel 报告。我目前大量使用 pandas 来处理我的数据,所以我很自然地想使用 pandas.ExcelWriter 方法来生成这些报告。然而,固定的列宽是个问题。

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

writer = pd.ExcelWriter(excel_file_path, engine='openpyxl')
df.to_excel(writer, sheet_name="Summary")

我正在查看 pandas 文档,但我并没有看到任何设置列宽的选项。是否有技巧可以使列自动调整到数据?或者我可以对 xlsx 文件做些什么来调整列宽?

(我正在使用 OpenPyXL 库,并生成 .xlsx 文件 - 如果这有什么不同的话。)

最佳答案

灵感来自 user6178746's answer ,我有以下内容:

# Given a dict of dataframes, for example:
# dfs = {'gadgets': df_gadgets, 'widgets': df_widgets}

writer = pd.ExcelWriter(filename, engine='xlsxwriter')
for sheetname, df in dfs.items():  # loop through `dict` of dataframes
    df.to_excel(writer, sheet_name=sheetname)  # send df to writer
    worksheet = writer.sheets[sheetname]  # pull worksheet object
    for idx, col in enumerate(df):  # loop through all columns
        series = df[col]
        max_len = max((
            series.astype(str).map(len).max(),  # len of largest item
            len(str(series.name))  # len of column name/header
            )) + 1  # adding a little extra space
        worksheet.set_column(idx, idx, max_len)  # set column width
writer.save()

关于python - 有没有办法使用 pandas.ExcelWriter 自动调整 Excel 列宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17326973/

相关文章:

vba - 如何在 Excel 中将一系列单元格从十进制转换为十六进制

python-3.x - 如何获得一维数据的k均值聚类?

python - 使用 pandas 读取 Excel 文件时遇到问题

excel - Mac Excel 2011 VBA UDF 不工作 - SET 或 FIND 命令似乎是问题

python - pandas 对不规则间隔时间数据进行重新采样

python - Pandas :用两列替换数据框中的一列

python - 使用 pytest.lazy_fixture 列表值作为另一个 fixture 中的参数

python - 使用 difflib SequenceMatcher 比率在 Pandas 中合并

python - 如何在python中将telnet输出日志保存到文本文件

python - 在 python opencv 中查找骨架化图像的交集