如何在Python中通过循环从Excel读取数据构建二维数组?
Excel多行多列数据转二维数组解决方案
你当前的代码每次循环都会重新赋值result,只能得到单个单元格的数组,无法生成二维结构。下面提供两种实现方式:
方式一:用内置遍历方法(简洁高效)
import openpyxl # 加载Excel工作簿 wb = openpyxl.load_workbook("IEEE.xlsx") bus1 = wb['33-Bus'] # 初始化二维数组 two_d_array = [] # 遍历每一行,直接获取行内所有单元格的值 for row in bus1.iter_rows(values_only=True): # 将当前行转为列表,添加到二维数组中 two_d_array.append(list(row)) # 验证结果 for row_data in two_d_array: print(row_data)
方式二:手动双重循环(贴近JavaScript写法)
如果你习惯用行列索引遍历,可参考这种写法:
import openpyxl wb = openpyxl.load_workbook("IEEE.xlsx") bus1 = wb['33-Bus'] row_max = bus1.max_row col_max = bus1.max_column two_d_array = [] for i in range(1, row_max + 1): # 每行开始时创建新的子数组 current_row = [] for j in range(1, col_max + 1): # 把当前单元格值加入子数组 current_row.append(bus1.cell(i, j).value) # 行遍历结束后,将子数组加入二维数组 two_d_array.append(current_row) # 输出最终二维数组 print(two_d_array)
额外优化提示
- 代码中未用到的
numpy、array、sys、open_binary模块可以直接删除,精简代码 - 如果需要把单元格的字符串值转为数值类型(比如整数/浮点数),可以在追加时做转换,例如
float(bus1.cell(i,j).value),注意提前处理空值情况
内容的提问来源于stack exchange,提问作者DemonSlayer987
相关产品推荐
相关产品推荐

