お約束
Excelのファイルは以下のような階層構造があります。
- Workbook
- Sheet
- 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")