如何用Openpyxl通过循环在指定单元格区域交替填充值?
使用Openpyxl交替填充对角线单元格
嘿,这需求挺清晰的,用openpyxl完全能搞定,我给你写个实用的代码示例,再把关键步骤掰碎了讲清楚,你直接抄过去改改就能用。
实现思路
核心就是遍历行号和列号相等的单元格(也就是从A1到H8的对角线),因为你要求从(1,1)开始,下一个到(2,2),直到列到H(第8列)或者行到10。由于列最多到8,所以我们只需要循环到第8行就够了,再往后行9、10的话列数不够对应相等的位置了。
完整代码示例
from openpyxl import Workbook, load_workbook # 这里分两种情况:创建新文件或者加载现有文件 # 情况1:创建新工作簿 wb = Workbook() ws = wb.active # 情况2:加载已有的Excel文件(把下面这行注释打开,注释掉上面两行) # wb = load_workbook("你的文件路径.xlsx") # ws = wb.active # 定义填充范围:行1到10,列1到8(H列) max_target_row = 10 max_target_col = 8 # 循环填充对角线单元格 # 取行和列的最小值作为循环上限,避免列越界 for idx in range(1, min(max_target_row, max_target_col) + 1): # 给(row=idx, column=idx)的单元格赋值"x" ws.cell(row=idx, column=idx, value="x") # 保存文件(如果是加载现有文件,注意覆盖原文件或者换个名字) wb.save("填充结果.xlsx")
关键细节解释
- 单元格定位:
ws.cell(row=行号, column=列号)是openpyxl定位单元格的标准方式,行和列都是从1开始计数,和Excel里的编号一致。 - 循环边界:用
min(max_target_row, max_target_col)来确定循环的最大索引,这样既不会超过行的上限10,也不会超过列的上限8,避免出现列号超过8的情况(比如行9对应列9,但我们只到H列也就是第8列)。 - 文件操作:如果是处理现有Excel文件,记得用
load_workbook替换Workbook(),保存时注意文件名,避免误删原文件。
要是你还有其他调整需求(比如填充完对角线后还要继续填充其他规律的单元格),随时说就行!
内容的提问来源于stack exchange,提问作者edgar lenin lizarraga gastelum
相关产品推荐
相关产品推荐

