自动调整多个工作表的Excel列宽

8 浏览
0 Comments

自动调整多个工作表的Excel列宽

我正在尝试自动调整多个工作表的Excel文件的列宽,并且我遇到了以下结果:Is there a way to auto-adjust Excel column widths with pandas.ExcelWriter?它在单个工作表的Excel文件中效果很好,但每次使用writer.save()时,它都会覆盖多个工作表的Excel文件,使其变成单个工作表。我的代码如下:

excel_path = os.path.join(temp_dir, file_name)
for i, (df, sheet_name) in enumerate(zip(dataframe_list, sheet_names)):
    if i == 0:
        df.to_excel(excel_path, sheet_name=sheet_name)
    else:
        with pd.ExcelWriter(excel_path, mode='a', engine='openpyxl') as writer:
            df.to_excel(writer, sheet_name=sheet_name)

有办法解决这个问题吗?

0
0 Comments

这是一个解决多工作表Excel自动调整列宽的问题的解决方案。问题是,当解析xlsx文件的工作表时,找到每一列的最大长度。

问题的原因是,当我们在处理Excel文件时,可能会遇到不同工作表中的文本内容长度不一致的情况。为了使每一列的文本都能完全显示,我们需要根据每个工作表中的文本内容的最大长度调整列宽。

解决方法是使用Python中的openpyxl库来操作Excel文件。首先,我们需要导入所需的模块。然后,定义一个名为excel_autoadjust_col的函数,该函数接受三个参数:文件路径、目标Excel文件名和填充量。

在函数内部,我们首先将目标Excel文件加载到内存中,并获取所有工作表的名称。然后,我们遍历每个工作表。对于每个工作表,我们获取其维度信息,并创建一个DimensionHolder对象来保存列的维度信息。

接下来,我们遍历每一列,并计算每列中文本内容的最大长度。我们使用双重循环来遍历每个单元格,并获取其值。如果单元格的值存在,则计算其长度,并将其与当前的最大宽度进行比较。如果长度较大,则更新最大宽度。

最后,我们使用DimensionHolder对象来更新工作表的列维度信息。将每列的最大宽度应用于相应的列。最后,我们保存并关闭Excel文件,并打印出调整完成的消息。

这个解决方案是通过遍历每个工作表的每一列,找到每列中文本内容的最大长度,并根据最大长度调整列宽来解决多工作表Excel自动调整列宽的问题。通过使用openpyxl库,我们可以方便地操作Excel文件,并实现自动调整列宽的功能。

0