1
3

More than 3 years have passed since last update.

OpenpyxlでPythonからExcelファイルを操作

Last updated at Posted at 2021-05-23

お約束

Excelのファイルは以下のような階層構造があります。

  1. Workbook
  2. Sheet
  3. Cell

特定のセルを読みたければ、「ワークブックを開いてシートを開いてセルを開く」が必要です。

インストール

  • 必要に応じて仮想環境を有効化すること
python -m pip install openpyxl

Pythonでパッケージ読み込み

  • NameError: name 'openpyxl' is not definedとか出たらこれをやる
import openpyxl

ワークブックを開く

  • カレントディレクトリに「sample.xlsx」があることを想定
workbook = openpyxl.load_workbook("sample.xlsx")

シートを開く

  • 上記で開いたワークブックに「Sheet」シートがあることを想定
    • シート名はケースセンシティブなので注意
sheet = workbook["Sheet"]

単一セルを選択

  • 上記で開いたシートの「A1」セルを選択
cell_A1 = sheet["A1"]

セルから情報を取得

  • 上記で開いたセルを対象に実行
# 入力値
cell_A1_value = cell_A1.value
print(cell_A1_value)

# ハイパーリンク
cell_A1_link = cell_A1.hyperlink.target
print(cell_A1_link)

# フォント
cell_A1_font = cell_A1.font
print(cell_A1_font)

セルに情報を設定

  • 上記で開いたセルを対象に実行
    • 後述の保存を行わないと反映されないので注意
# 入力値
cell_A1.value = "Qiita"

# ハイパーリンク
cell_A1.hyperlink.target = "https://qiita.com/"

列の追加

  • 上記で開いたシートを対象に実行
    • 後述の保存を行わないと反映されないので注意
# A列が1。以下の例ではB列の位置に列を挿入。B列はC列へ移動
sheet.insert_cols(2)

行の追加

  • 上記で開いたシートを対象に実行
    • 後述の保存を行わないと反映されないので注意
# 1行目が1。以下の例では2行目の位置に列を挿入。2行目は3行目へ移動
sheet.insert_rows(2)

ワークブックを保存

  • 上記で開いたワークブックを保存
# 開いたファイルと同名を指定すると上書き
workbook.save("sample.xlsx")

# 開いたファイルと別名を指定すると新規作成
workbook.save("sample_changed.xlsx")
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3