openpyxlを使ってみた。整理できていないけど、参考として記載。
import openpyxl base_port_row =0 base_port_column =0 wb = openpyxl.load_workbook(filename = 'sample_1.xlsx') ws = wb.active #test_list = [[input_1,infile,bpp,epp,hsize,vsize],[...],] for test in ws: for data in test: if data.value == "port" : base_port_row = data.row base_port_column = data.column break inport_no_select_list = [] inport_select_list = [] outport_no_select_list = [] outport_select_list = [] regport_no_select_list = [] for i in range(base_port_row+1,ws.max_row+1): sel_num = ws.cell(i,base_port_column-2).value bit_wid = ws.cell(i,base_port_column-1).value port_name = ws.cell(i,base_port_column-0).value file_name = str(ws.cell(i,base_port_column-0).value) + ".bin" inport_select_list.append ([port_name,file_name, bit_wid,1,320,240,sel_num]) inport_no_select_list.append([port_name,"empty.bin",bit_wid,1,320,240,sel_num]) for i in range(base_port_column+1,ws.max_column+1): reg_name = ws.cell(base_port_row-2,i).value bit_wid = ws.cell(base_port_row-1,i).value port_name = ws.cell(base_port_row-0,i).value file_name = str(ws.cell(base_port_row-0,i).value) + ".bin" outport_no_select_list.append([port_name,file_name,bit_wid,1,320,240,reg_name]) outport_select_list.append ([port_name,file_name,bit_wid,1,320,240,reg_name]) regport_no_select_list.append([reg_name,0]) #peer to peer test_list = [] input_num = 0 for i in range(base_port_row+1,ws.max_row): temp_in_list = inport_no_select_list.copy() temp_in_list[input_num] = inport_select_list[input_num] output_num = 0 for j in range(base_port_column+1,ws.max_column): if ws.cell(i,j).value is not None: temp_out_list = outport_no_select_list.copy() temp_out_list[output_num] = outport_select_list[output_num] temp_reg_list = regport_no_select_list.copy() temp_reg_list[output_num][1] = temp_in_list[input_num][6] test_list.append(temp_in_list + temp_out_list + temp_reg_list) output_num += 1 input_num += 1 print (test_list[0])