Pythonで「openpyxl」ライブラリを利用して、エクセルの「セル」の範囲指定をしたデータの読み取りと書き込みをまとめました。
なかなか、ネットに情報が乗っていないので、私が動作確認できた範囲指定のコードを紹介します。
「openpyxl」ライブラリを利用してエクセルの範囲指定とデータの「読み取り」と「書き込み」プログラム
エクセルの範囲指定を利用した読み取り、書き込みは「openpyxl」ライブラリを使用します。
今回は、エクセルのデータからから範囲指定でデータを読み取り、別シートの指定位置に貼り付けるプログラムとなります。
※ for_test00.py
import openpyxl wb =openpyxl.load_workbook('excel-data_find.xlsx') wb.create_sheet('interface') sheet = wb.get_sheet_by_name('Sheet1') sheet2 = wb.get_sheet_by_name('interface') for i in range(1,10): #コピー元の列を読み取り copy = sheet.cell(row = i, column = 4).value #Valueに指定した値を指定先の列に書き込む sheet2.cell(row = i, column = 6, value = copy) i += 1 wb.save('data.xlsx') print('別シート「interface」への出力完了')
- 3行目:該当のエクセルファイルの読み取り
- 4行目:新規に「interface」と言う名前のシートを作成
- 6、7行目:シートの読み取り
- 9行目:for文開始。range関数1行目〜9行目を指定
- 11行目:4列目の1〜9行目までのデータをコピー
- 13行目:6列目の1〜9行目まにコピーしたデータを貼り付け
- 15行目:forで毎回1行ごとに繰り返し処理
書き込みする際に開始する行を変更する場合のコード
以下では書き込み先のエクセルシートを範囲指定して書き込みをしたい際に実施するコードとなります。
今回はコピしたデータを書き込み先のセル「G列の11行目から19行目」までに書き込みするように、関数「i」に「+10」をつけることで11行目から書き込みを開始するようになります。
import openpyxl wb =openpyxl.load_workbook('excel-data_find.xlsx') wb.create_sheet('interface') sheet = wb.get_sheet_by_name('Sheet1') sheet2 = wb.get_sheet_by_name('interface') for i in range(1,10): sheet2['G5'] = 'テスト' #コピー元の列を読み取り copy = sheet.cell(row = i, column = 4).value #Valueに指定した値を指定先の列に書き込む sheet2.cell(row = i+10, column = 7, value = copy) i += 1 wb.save('data.xlsx') print('別シートへの出力完了')
- 3行目:該当のエクセルファイルの読み取り
- 4行目:新規に「interface」と言う名前のシートを作成
- 6、7行目:シートの読み取り
- 9行目:for文開始。range関数1行目〜9行目を指定
- 10行目:セル「G5」へ「テスト」と言う文字列データを書き込み
- 12行目:4列目の1〜9行目までのデータをコピー
- 14行目:6列目の11〜19行目まにコピーしたデータを貼り付け
- 16行目:forで毎回1行ごとに繰り返し処理
※ 実行結果
PS C:> python for_test00.py .for_test02.py:6: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]). sheet = wb.get_sheet_by_name('Sheet1') .for_test02.py:7: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]). sheet2 = wb.get_sheet_by_name('interface') 別シートへの出力完了 PS C:>
エクセルシートで正常に読み込み、書き込みができたことを確認
正常にプログラムが実行できた際は以下のようになります。
読み込み先のデータは以下となります。
ここから、4列目(D列)の1行目〜9行目をコピーします。
コピーしたデータを、7行目(G列)の11行目〜19行目に書き込みをします。
これで範囲指定で任意のシートセルへの読み込み書き込みをすることが可能となります。
前回、指定の文字列のデータを抽出するプログラムも書いているので参考にしてください。
openpyxlは今回のような範囲指定では使いやすいライブラリとなるので活用しましょう。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す