How to auto resize column using openpyxl?

问题描述 投票:0回答:0

我正在使用 openpyxl 引擎将工作表附加到 Excel 工作表。我发现了一些可以调整列大小的代码,但是在使用 openpyxl 附加工作表时它不起作用。这是我的代码:

import pandas as pd

filename = 'December 2022 Report'

df = pd.read_excel(f'{filename}.xlsx')

# creates new df of properties with at least 5 repeats
df2 = df.groupby(by='u_identifier', as_index=True).filter(lambda x : len(x)>=5)
    
with pd.ExcelWriter(f'{filename}-FILTERED.xlsx') as writer:  
    df2.to_excel(writer, index=False, sheet_name='filtered_list')
    # auto-sizes columns
    for column in df2:
      column_width = max(df[column].astype(str).map(len).max(), len(column))
      col_idx = df.columns.get_loc(column)
      writer.sheets['filtered_list'].set_column(col_idx, col_idx, column_width)

flagged_count = df2.groupby('Property name', as_index=True).size().to_frame('count').reset_index()
    
with pd.ExcelWriter(f'{filename}-FILTERED.xlsx', engine='openpyxl', mode='a') as writer:  
    flagged_count.to_excel(writer, index=False, sheet_name='count')

all_count_df = df.groupby('Property name', as_index=True).size().to_frame('count')

with pd.ExcelWriter(f'{filename}-FILTERED.xlsx', engine='openpyxl', mode='a') as writer:  
    all_count_df.to_excel(writer, sheet_name='all_count')

all_count_df.to_excel('all_properties_count.xlsx')

这是一个旁注,但如果我像使用 flagged_count 一样重置 all_count_df 的索引,然后在 to_excel 函数中将索引设置为 False 会更好吗?我不知道哪种方法更“合适”,所以我只是用不同的工作表做了这两种方法。就数据在最终 Excel 工作簿中的显示方式而言,似乎没有任何重大差异。

excel pandas openpyxl
© www.soinside.com 2019 - 2024. All rights reserved.