Excel用のPythonライブラリのうち,
日本語記事が既にいくつか存在するOpenPyXLについて説明します。
インストール方法
pip install OpenPyXL
普通にpipするのみ
場合によってはMSのframeworkのインストールが必要になることもあり
また、OpenPyXLで画像ファイルを扱うためにはPillowという画像ファイル向けのライブラリが使える
OpenPyXLとXlsxWriterの比較
同様に日本語記事が多い、Excel用のPythonライブラリであるXlsxWriterと比較を行うと、
XlsxWriterは新規Excelファイルの作成が必要になるため、
既存Excelの編集時はOpenPyXLを使うことになる。
また、既存Excelファイルの読み込みを行う場合も必然的にOpenPyPlを使うことになる。
したがってXlsxWriterを使う必要性を感じなかったため、自分はOpenPyXLに一本化しました。
ExcelへのPython搭載のウワサの非公式NG回答(2018/12/26 追記)
Pythonのライブラリ使えとのことのようです。細かくはこちらのエントリーをご覧ください。
「ExcelにPythonが搭載?その後 - xlwings を使おう - Qiita」
https://qiita.com/yniji/items/b38bc312e860027108ac
OpenPyXL
公式サイト
「openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 2.5.2 documentation」
https://openpyxl.readthedocs.io/en/stable/
ファイルの保存(絶対パス)
# 新規ファイル作成
wb = px.Workbook()
# 保存
wb.save('C:\myDev\myTest\sample.xlsx')
セルの値書き込み
# 新規ファイル作成
wb = px.Workbook()
# 対象のシートを選択する
ws = wb.active
# セル操作
## A1形式
ws['A1'].value = 'Hello World'
## R1C1形式
ws.cell(row=2, column=3).value = "123"
# 保存(絶対パス)
wb.save('C:\myDev\myTest\sample.xlsx')
セルの値読み込み
# ファイル読み込み
wb = px.load_workbook('./example.xlsx')
ws = wb.active
# A1形式
a1 = ws['A1'].value
print(a1)
# R1C1形式
r1c1 = ws.cell(row=2, column=3).value
print(r1c1)
Excel関数の使用
# 新規ファイル作成
wb = px.Workbook()
# 対象のシートを選択する
ws = wb.active
# 値を入力
# 数字は文字型ではなく数値型として入力した方がベターなよう
ws['A1'].value = 1
ws['A2'].value = 2.50000003
ws['A3'].value = 3.5
# 関数を入力
ws['B1'].value = '=SUM(A1:A3)'
ws['B2'].value = '=AVERAGE(A:A)'
# 保存(絶対パス)
wb.save('C:\myDev\myTest\calc.xlsx')
画像ファイルの挿入
import openpyxl as px
from openpyxl.drawing.image import Image
# 新規ファイル作成
wb = px.Workbook()
# 対象のシートを選択する
ws = wb.active
# 画像ファイル(相対パス)
img = Image('test.jpg')
# 画像ファイル(相対パス)
img2 = Image("C:\myDev\myTest\\test.jpg")
# A1形式で挿入
ws.add_image(img, 'A1')
# R1C1形式は不可...?
# ws.add_image(img2, 'R8C[8')
wb.save('logo.xlsx')
読み込み専用モード
大容量ファイルや変更を行いたくないファイル向けに読み込みモードが利用可能
「Read-only mode — openpyxl 2.5.2 documentation」
https://openpyxl.readthedocs.io/en/stable/optimized.html
雑記
仕事ではExcel地獄かってぐらいにExcel使うんですが、
仕事以外ではほとんど使わないんですよね。。
Happy Excel!