openpyxl 如何获取Excel每列单元格内容的最大长度
openpyxl获取Excel每列内容最大长度的修改方案
你现有代码的核心逻辑是外层遍历行、内层遍历列,统计的是单一行内所有单元格的内容最大长度,和你要的每列最大长度的需求正好相反,只需交换内外层循环逻辑即可。
修改后的完整代码如下:
import openpyxl filepath = "test.xlsx" wb = openpyxl.load_workbook(filepath) ws = wb.active max_row = ws.max_row max_column = ws.max_column # 外层遍历所有列 for j in range(1, max_column + 1): max_length = 0 # 内层遍历当前列的所有行 for i in range(1, max_row + 1): try: current_len = len(str(ws.cell(row=i, column=j).value)) if current_len > max_length: max_length = current_len except: pass # 遍历完一列后输出该列的最大长度 print(f"第{j}列最大内容长度:{max_length}")
核心修改点:
- 交换行、列的遍历顺序,外层先循环所有列,每列单独初始化最大长度计数器
- 内层循环遍历当前列的所有行单元格,更新当前列的最大长度
- 每列遍历完成后再输出结果,可自定义输出格式同时标注列号方便匹配
如果需要后续使用各列的最大长度值,也可以用字典存储结果,示例如下:
col_max_len = {} for j in range(1, max_column + 1): max_length = 0 for i in range(1, max_row + 1): try: current_len = len(str(ws.cell(row=i, column=j).value)) if current_len > max_length: max_length = current_len except: pass col_max_len[j] = max_length print(col_max_len)
内容的提问来源于stack exchange,提问作者eun
相关产品推荐
相关产品推荐

