前回、Pythonでエクセル内のデータから文字列のセルと周辺のデータを「offset」で出力しました。
あわせて読みたい


【Python】openpyxlでrangeとoffsetを利用した出力プログラム
Pythonで「openpyxl」ライブラリを利用し、「range」と「offset」を利用したエクセルデータの出力プログラムを作成しました。 前回、「offset」を利用したデータ出力を...
今回は抽出したデータを別のエクセルの指定のシートとセルに書き込むプログラムを作成したのでまとめます。
openpyxlで抽出したデータを別のエクセルの指定の位置に書き込む
前回同様、以下のNW機器から抽出したコンフィグを以下のエクセルシートに書き込んだ後、そこから指定の文字列を抽出し、さらに周辺のセルのデータも一緒に抽出し、別のエクセルシートに書き込みます。
以下が作成したプログラムとなります。
エクセルへのデータ書き込み作成コード
データ取得先のエクセルから、指定の文字列とその隣のデータを抽出し、別のエクセルシートへの作成するコードとなります。
※ parameter_06.py
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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」の文字列のセルの取得とその右隣りのセルのデータを指定の範囲に張り付ける
書き込みプログラム実行
以下でプログラムを実行します。
1 | PS C:> python parameter_06.py |
実行した結果、指定の位置から抽出したデータをセルに書き込むことができました。
文字列取得とoffsetを利用したデータの抽出と別のエクセルへの書き込みは以上となります。
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメント