我被要求生成一些 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/