前回、Pythonでエクセル内のデータから文字列のセルと周辺のデータを「offset」で出力しました。
今回は抽出したデータを別のエクセルの指定のシートとセルに書き込むプログラムを作成したのでまとめます。
openpyxlで抽出したデータを別のエクセルの指定の位置に書き込む
前回同様、以下のNW機器から抽出したコンフィグを以下のエクセルシートに書き込んだ後、そこから指定の文字列を抽出し、さらに周辺のセルのデータも一緒に抽出し、別のエクセルシートに書き込みます。
以下が作成したプログラムとなります。
エクセルへのデータ書き込み作成コード
データ取得先のエクセルから、指定の文字列とその隣のデータを抽出し、別のエクセルシートへの作成するコードとなります。
※ parameter_06.py
import openpyxl as px # データを抽出するファイルを読み取り wb = px.load_workbook('excel-data.xlsx') # データを書き込む先のファイルを作成 wb2 = px.Workbook('data.xlsx') ws2 = wb2.create_sheet(title='interface') wb2.save('data.xlsx') # データを抽出するファイル、書き込み先のファイルを読み込み wb2 = px.load_workbook('data.xlsx') ws = wb["Sheet1"] # 入力のシート ws2 = wb2["interface"] # 出力先のシート # データ書き込み先の開始行 start_row = 3 row_num = start_row offset = 1 # interfaceの文字列が表示されているデータを取得 for i in range(1,200): copy1 = ws.cell(row = i, column = 2).value, ws.cell(row = i, column = 2 + offset).value print(copy1) # 「interface」の文字列がある行と右隣りの行を張り付ける for g in range(1,2): if 'interface' in copy1: ws2.cell(row_num, column=g+1).value = copy1[0] ws2.cell(row_num, column=g+2).value = copy1[1] row_num += 1 # ファイルを保存 wb2.save('data.xlsx') # ロードしたExcelファイルを閉じる wb.close() wb2.close()
- 18-19行目:データ書き込み先の開始行の設定(ここでは3列目に書き込み)
- 21行目:offsetで取得したデータの右隣りのセルのデータを出力するので「1」を設定
- 24-26行目:指定の範囲内でデータを取得
- 29-33行目:取得したデータから「interface」の文字列のセルの取得とその右隣りのセルのデータを指定の範囲に張り付ける
書き込みプログラム実行
以下でプログラムを実行します。
PS C:> python parameter_06.py
実行した結果、指定の位置から抽出したデータをセルに書き込むことができました。
文字列取得とoffsetを利用したデータの抽出と別のエクセルへの書き込みは以上となります。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す