MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. プログラミング
  4. Python
  5. 【Python】openpyxlのエクセル操作の使い方まとめ

【Python】openpyxlのエクセル操作の使い方まとめ

2020 2/20
Python
2020年2月19日2020年2月20日

Pythonの「openpyxl」ライブラリを使ったエクセルの操作をまとめました。
実際に使ってみてできたプログラムをまとめています。

目次
  1. 「openpyxl」ライブラリを使用したエクセル操作の使い方まとめ
    1. エクセル作成
    2. エクセル新規作成と「セル」の書き込み
    3. エクセルのシート情報取得
    4. エクセルのセル情報取得
    5. エクセルのセル情報を列で複数行取得
    6. エクセルのシートコピーと別のワークブックへの書き込み
    7. エクセルのセルを範囲指定で別シートにコピー
    8. セルの範囲を別ブックのシートに貼り付ける
    9. セルを範囲指定で出力
    10. セル範囲指定で出力と別シートへのコピー
    11. セル範囲指定で出力と別シートへのコピー その2
    12. セルに罫線を記載
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

「openpyxl」ライブラリを使用したエクセル操作の使い方まとめ

「openpyxl」を使ってエクセルの新規作成、データ出力、コピー&ペースト、罫線の作成をまとめています。
pythonでエクセル自動化をされる際は参考にしてください。

エクセル作成

以下は、新規でエクセルを作成するときのプログラムとなります。
※00_excel_create.py

1
2
3
4
import openpyxl as px
book = px.Workbook()
book.save('sample-test.xlsx')
print('> エクセル新規作成')
  • importで、「openpyxl」を定義
  • 2行目:新規エクセルを起動
  • 3行目:名前を付けてエクセルを保存

※実行結果

1
2
3
PS C:\Python> python .\00_excel_create.py
> エクセル新規作成
PS C:\Python>

以下で、新規に「sample-test.xlsx」というエクセルファイルが作成されたことを確認できます。

エクセル新規作成と「セル」の書き込み

以下はエクセルの新規作成とセルへの書き込みプログラムとなります。

01
02
03
04
05
06
07
08
09
10
11
12
13
import openpyxl as px
wb = px.Workbook()
ws = wb.active
 
ws['A1'].value = 'セル「A1」テスト'
ws['B2'].value = 'セル「B2」テスト'
ws['C3'].value = 'セル「C3」テスト'
 
print(ws['A1'].value)
print(ws['B2'].value)
print(ws['C3'].value)
 
wb.save('sample1.xlsx')
  • 2行目:新規エクセルを起動
  • 3行目:ワークシート指定
  • 5−7行目:セルへ書き込み
  • 9−11行目:書き込みデータを出力
  • 13行目:エクセルを保存

※実行結果

1
2
3
4
5
PS C:\Python> python .\04_excel_sheet_cel_write.py
セル「A1」テスト
セル「B2」テスト
セル「C3」テスト
PS C:\Python>

エクセルのシート情報取得

以下のエクセルシートの名前を出力させます。

※01_excel_sheet_get.py

1
2
3
4
5
6
import openpyxl as px
 
book = px.load_workbook('excel-data.xlsx')
name = book.get_sheet_names()
 
print(name)
  • 3行目:エクセルを読み込み
  • 4行目:シートの名前を取得
  • 6行目:シートの名前を出力

※実行結果

1
2
3
4
5
PS C:\Python> python .\01_excel_sheet_get.py
.\01_excel_sheet_get.py:4: DeprecationWarning: Call to deprecated function get_sheet_names (Use wb.sheetnames).
  name = book.get_sheet_names()
['Sheet1', 'test_sheet']
PS C:\Python>

4行目でシート名(’Sheet1′, ‘test_sheet’)が出力されていることが確認できました。

エクセルのセル情報取得

以下はエクセルの「セル」内のデータ情報を出力します。

※ 02_excel_cel_get.py

1
2
3
4
5
import openpyxl as px
wb = px.load_workbook('excel-data.xlsx')
ws = wb['Sheet1']
 
print(ws["D5"].value)
  • 2行目:エクセルを読み込む
  • 3行目:ワークブック「Sheet1」を読み込み、関数名「ws」とする
  • 5行目:ws(Sheet1)内の「D5」のセル情報「7.7M」のデータを出力

※実行結果

1
2
3
PS C:\Python> python .\02_excel_cel_get.py
7.7M
PS C:\Python>

セル「D5」のデータ情報「7.7M」が出力されてことが確認できます。

エクセルのセル情報を列で複数行取得

以下では、セルの情報を「列」で取得するプログラムとなります。

※ 03_excel_cel_get.py

1
2
3
4
5
6
7
8
import openpyxl as px
wb = px.load_workbook('excel-data.xlsx')
ws = wb['Sheet1']
 
for i in range(5):
    some = "B" + str(i + 2)
    print(ws[some].value)
    i += 1
  • 2行目:エクセルを読み込み
  • 3行目:対象のシートを読み込み
  • 5行目:for文を定義し、レンジを5とする
  • 6行目:B列の2行目から5行のデータを読み込み
  • 7-8行目:1行づつデータを出力

※実行結果

1
2
3
4
5
6
7
PS C:\Python> python .\03_excel_cel_get.py
ファイルシス
devtmpfs
tmpfs
tmpfs
tmpfs
PS C:\Python>

B列の2行目から5行分のデータを出力できました。

エクセルのシートコピーと別のワークブックへの書き込み

以下は、エクセルのシートのデータを、別のエクセルへコピーするプログラムとなります。

※ 05_excel_sheet_cel_copy_write.py

1
2
3
4
5
6
7
8
from openpyxl import load_workbook
  
wb = load_workbook('sample1.xlsx')
ws = wb.active
  
wb.save('sample2.xlsx')
 
print('sample2へのコピー完了')
  • 3行目:「sample1.xlsx」のエクセルファイルを読み込み
  • 4行目:シート読み込み
  • 6行目:「sample2.xlsx」へデータをコピー

※実行結果

1
2
3
PS C:\Python> python .\05_excel_sheet_cel_copy_write.py
sample2へのコピー完了
PS C:\Python>

別のエクセルファイル「sample2.xlsx」へデータがコピーされたことが確認できました。

エクセルのセルを範囲指定で別シートにコピー

以下では、指定のセルのデータを、別シートに範囲指定で貼り付けるプログラムとなります。
「Sheet1」のセル「B3」のデータ「devtmpfs」を別シートの「B3」へ貼り付けます。

※ 06_excel_sheet_cel_copy_write_02.py

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
import openpyxl as px
 
#Excelファイルを読み込む
wb = px.load_workbook('excel-data.xlsx')
 
#「Sheet2」作成
wb.create_sheet('Sheet2')
 
ws = wb['Sheet1']
ws2 = wb['Sheet2']
 
#Sheet1のB3セルの値をSheet2のB3セルにコピーする
ws2["B3"] = ws["B3"].value
 
wb.save('excel-data.xlsx')
 
print('Sheet2へのコピー完了')
  • 4行目:対象のエクセルを読み込む
  • 7行目:新規シート「Sheet2」を作成
  • 9−10行目:それぞれのシートを読み込む
  • 13行目:Sheet1の「B3」のデータをSheet2の「B3」へコピーする
  • 15行目:エクセルファイルを保存する

※実行結果

1
2
3
PS C:\Python> python 06_excel_sheet_cel_copy_write_02.py
Sheet2へのコピー完了
PS C:\Python>

対象のデータが、別シートにコピーされたことが確認できました。

セルの範囲を別ブックのシートに貼り付ける

以下は、エクセルファイルのデータを別のエクセルファイルへデータコピーするプログラムとなります。

※ 07_excel_sheet_cel_copy_write_03.py

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
import openpyxl as px
 
#Excelファイルを読み込む
wb1 = px.load_workbook('excel-data.xlsx')
wb2 = px.load_workbook('sample-test.xlsx')
ws1 = wb1['Sheet1']
ws2 = wb2['Sheet']
 
#「sample-test.xlsx」のSheetのセルに「excel-data.xlsx」Sheet1のB3セルの値をコピーする
ws2["A1"] = ws1["B3"].value
 
wb1.save('excel-data.xlsx')
wb2.save('sample-test.xlsx')
 
print('sample-test_sheetへのコピー完了')
  • 4行目:「excel-data.xlsx」を読み込む
  • 5行目:「sample-test.xlsx」を読み込む
  • 6行目:excel-data.xlsxのシート「Sheet1」を読み込む
  • 7行目:sample-test.xlsxのシート「Sheet」を読み込む
  • 10行目:「excel-data.xlsx」の「Sheet1」の「B3」のデータを、「sample-test.xlsx」の「Sheet」の「A1」へコピーする
  • 12−13行目:エクセルファイルを保存する

※実行結果

1
2
3
PS C:\Python> python .\07_excel_sheet_cel_copy_write_03.py
sample-test_sheetへのコピー完了
PS C:\Python>

別のエクセルへ該当のデータが書き込まれたことを確認できました。

セルを範囲指定で出力

以下は、エクセルファイルのB列の1行目から10行目までのデータを出力するプログラムとなります。

※ 08_excel_sitei.py

01
02
03
04
05
06
07
08
09
10
11
import openpyxl
 
# ブックを取得
book = openpyxl.load_workbook('excel-data.xlsx')
# シートを取得
sheet = book['Sheet1']
 
# セルを取得
for rows in sheet.iter_rows(min_row=1, min_col=2, max_row=10, max_col=2):
    for cell in rows:
        print(cell.value)
  • 4行目:該当のエクセルを読み込む
  • 6行目:対象のシートを読み込む
  • 9-11行目:B列の1行目から10行目までのデータを出力

※ 実行結果

01
02
03
04
05
06
07
08
09
10
11
12
PS C:\Python> python 08_excel_sitei.py
c00
ファイルシス
devtmpfs
tmpfs
tmpfs
tmpfs
/dev/mapper/centos-root
/dev/sda1
tmpfs
None
PS C:\Python>

セル範囲指定で出力と別シートへのコピー

以下は、範囲指定でデータを出力と別シートにデータをコピーするプログラムとなります。
※別シートにコピーされたデータは最後に出力されたデータが書き込まれます。

※ 09_excel_sitei_02.py

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
import openpyxl as px
  
#Excelファイルを読み込む
wb = px.load_workbook('excel-data.xlsx')
 
#「Sheet3」作成
wb.create_sheet('Sheet3')
 
ws = wb['Sheet1']
ws2 = wb['Sheet3']
 
for i in ws.iter_rows(min_row=2,min_col=2,max_row=6,max_col=2):
    for c in i:
        ws2["A1"] = c.value
        print(c.value)
 
wb.save('excel-data.xlsx')
 
print('Sheet3へのコピー完了')
  • 4行目:該当のエクセルを読み込む
  • 7行目:Sheet3を新規作成
  • 9−10行目:それぞれのシートを読み込み
  • 12-15行目:範囲指定でデータを出力。それぞれのデータを「Sheet3」の「A1」へコピー

※ 実行結果

1
2
3
4
5
6
7
8
PS C:\Python\04_openpyxl使い方> python .\09_excel_sitei_02.py
ファイルシス
devtmpfs
tmpfs
tmpfs
tmpfs
Sheet3へのコピー完了
PS C:\Python\04_openpyxl使い方>

指定範囲のデータが出力され、別シートの「A1」へ最後に出力されたデータが書き込まれたことを確認できました。

セル範囲指定で出力と別シートへのコピー その2

以下は、セルの範囲指定で読み込んだ全てのデータを別シートに書き込むプログラムとなります。

※ 09_excel_sitei_03.py

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
import openpyxl as px
  
#Excelファイルを読み込む
wb = px.load_workbook('excel-data.xlsx')
 
#「Sheet3」作成
wb.create_sheet('Sheet3')
 
ws = wb['Sheet1']
ws2 = wb['Sheet3']
  
for i in range(1,10):
#コピー元の列を定義
    copy = ws.cell(row = i, column = 2).value
#Valueに指定した値を指定先の列に貼り付ける
    ws2.cell(row = i, column = 5, value = copy)
    i += 1
 
wb.save('excel-data.xlsx')
print('Sheet3へのコピー完了')
  • 4行目:エクセルファイルを読み込む
  • 7行目:新規にシートを作成
  • 9−10行目:それぞれのシートを読み込み
  • 12行目:レンジで範囲指定
  • 14行目:B行の1行目-9行目までをコピー
  • 16−17行目:別シートのE列の1行目-9行目にデータを貼り付け
  • 19行目:エクセルファイルを保存

※ 実行結果

1
2
3
PS C:\Python> python .\09_excel_sitei_03.py
Sheet3へのコピー完了
PS C:\Python>

範囲指定でコピーしたデータが別ファイルに書き込まれたことを確認できました。

セルに罫線を記載

以下はエクセルに罫線を書き込むプログラムとなります。

※ 10_excel_style_01.py

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
import openpyxl as px
from openpyxl.styles import Border, Side
 
wb = px.load_workbook('sample1.xlsx')
ws = wb['Sheet']
 
side1 = Side(style = 'thick', color='00FF00')
side2 = Side(style = 'dashDot', color='0000FF')
side3 = Side(style = 'slantDashDot', color='FF0000')
 
for rows in ws['A1':'B1']:
    for cell in rows:
        cell.border = Border(left = side1, right = side1, top = side1, bottom = side1)
for rows in ws['B2':'B5']:
    for cell in rows:
        cell.border = Border(left = side2, right = side2, top = side2, bottom = side2)
for rows in ws['C1':'D7']:
    for cell in rows:
        cell.border = Border(left = side3, right = side3, top = side3, bottom = side3)
 
wb.save('sample1.xlsx')
print('罫線の記載完了')
  • 1−2行目:openpyxlをインポート
  • 4行目:対象のエクセルファイルを読み込み
  • 5行目:対象シートの読み込み
  • 7−9行目:罫線のスタイルを定義
  • 11−19:それぞれの罫線を指定範囲で書き込み
  • 21行目:エクセルファイルを保存

※ 実行結果

1
2
3
PS C:\Python> python .\10_excel_style_01.py
罫線の記載完了
PS C:\Python>

罫線が、指定の範囲で書き込まれていることが確認できます。

openpyxlの使い方まとめでした。

エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

Python
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
  1. 「openpyxl」ライブラリを使用したエクセル操作の使い方まとめ
    1. エクセル作成
    2. エクセル新規作成と「セル」の書き込み
    3. エクセルのシート情報取得
    4. エクセルのセル情報取得
    5. エクセルのセル情報を列で複数行取得
    6. エクセルのシートコピーと別のワークブックへの書き込み
    7. エクセルのセルを範囲指定で別シートにコピー
    8. セルの範囲を別ブックのシートに貼り付ける
    9. セルを範囲指定で出力
    10. セル範囲指定で出力と別シートへのコピー
    11. セル範囲指定で出力と別シートへのコピー その2
    12. セルに罫線を記載
目次
  1. 「openpyxl」ライブラリを使用したエクセル操作の使い方まとめ
    1. エクセル作成
    2. エクセル新規作成と「セル」の書き込み
    3. エクセルのシート情報取得
    4. エクセルのセル情報取得
    5. エクセルのセル情報を列で複数行取得
    6. エクセルのシートコピーと別のワークブックへの書き込み
    7. エクセルのセルを範囲指定で別シートにコピー
    8. セルの範囲を別ブックのシートに貼り付ける
    9. セルを範囲指定で出力
    10. セル範囲指定で出力と別シートへのコピー
    11. セル範囲指定で出力と別シートへのコピー その2
    12. セルに罫線を記載