pythonによるexcelファイル操作
エクセル記載のレジスタネームと値を所定のフォーマットにして出力するため実施した
エクセルファイルの読み込み
openpyxlを使用した。
今回はかんたんな操作だけだったので、opoenpyxlで良いかと。複雑になればpandasとか使えばいいのでは
load_workbook()でinputファイルを選択
該当シートは上記で選択したファイル名['シート']で選択可能
load_workbook(r'reg_setting.xlsx') sheet = workbook['Sheet1']
あとは、
sheet.cell(row=xx , column=yy).value
でほしいセルの値をとってくることが可能
.valueを抜かしていて、cell自体のrow, column情報しかとってこれず、一瞬ハマったので注意
numpy arrayを使ってネームと値を格納しているが、
ネームに関してはdtype=strではうまく行かなそうなので、objectを指定。
ファイル出力
ついでに、記載
with open(file_name, "w") as outfile: outfile.write(r'regname=%s:regvalue=set(%d)' % (reg_name[i], reg_value[i]) + '\n')
with open(file, "w") as outfile:
とすることで、ファイル書き込み終了時の終了の記載が必要なくなる。
あとは.write()で書き込み。withなので閉じなくてOK
以下備忘コード
#!/usr/bin/env python # coding: utf-8 import openpyxl as ox import numpy as np ########file setting parameter######### ####input file####### workbook = ox.load_workbook(r'reg_setting.xlsx') sheet = workbook['Sheet1'] ##data range row_range = np.arange(4, 13, 1) reg_name_column = 3 reg_value_column = 4 ####output file###### file_name = 'reg_set_REGOUT.sv' #file directory below #####excel file read reg_name = np.array([], dtype=object) reg_value = np.array([], dtype=int) for i in row_range: reg_name = np.append(reg_name, sheet.cell(row=i, column=reg_name_column).value) reg_value = np.append(reg_value, sheet.cell(row=i, column=reg_value_column).value) ####write reg_setting to outputfile#### with open(file_name, "w") as outfile: for i in range(len(reg_name)): outfile.write(r'regname=%s:regvalue=set(%d)' % (reg_name[i], reg_value[i]) + '\n')