如何用Openpyxl冻结Excel首列?现有代码报错求解决
解决openpyxl冻结Excel第一列的问题
原代码的核心问题是冻结点设置错误,同时存在缩进不规范的问题。以下是具体修正方案:
关键错误分析
worksheet.freeze_panes = 'A'无法实现整列冻结:该设置将冻结点设为A1单元格,仅会固定该单元格上方(无内容)和左侧(无列)的区域,达不到横向滚动时固定A列的效果。正确的冻结点应设为'B1',这样B1左侧的A列会被固定。- 代码缩进层级错误:原代码中for循环的缩进与上层代码不对齐,会直接导致语法报错。
修正后的完整代码
from openpyxl import Workbook from openpyxl.utils import get_column_letter from openpyxl.worksheet.dimensions import DimensionHolder, ColumnDimension # 创建工作簿和工作表实例 wb = Workbook() worksheet = wb.active # 批量设置列宽(修正缩进问题) dim_holder = DimensionHolder(worksheet=worksheet) for col in range(worksheet.min_column, worksheet.max_column + 1): dim_holder[get_column_letter(col)] = ColumnDimension( worksheet, min=col, max=col, width=20) # 单独设置A列宽度 dim_holder['A'] = ColumnDimension(worksheet, min=1, max=1, width=35) worksheet.column_dimensions = dim_holder # 冻结第一列:设置冻结点为B1,其左侧的A列将被固定 worksheet.freeze_panes = 'B1' # 保存生成的Excel文件 wb.save("frozen_first_column.xlsx")
效果验证
打开生成的Excel文件后,横向滚动时A列会始终固定在视图左侧,其余列可正常滚动。
内容的提问来源于stack exchange,提问作者Happy Coder
相关产品推荐
相关产品推荐

