pythonでExcel(xlsx)を作成・編集・読み込みができるモジュールである openpyxl
の使い方メモです。
OpenPyXLドキュメント
http://openpyxl.readthedocs.io/en/stable/
Excelファイル作成
Excelファイルを作成する
空のExcelファイルを作成します。
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
Excelファイル(xlsx)を作るだけ
`example.xlsx` が実行したカレントにできる
"""
wb = openpyxl.Workbook()
# 保存
wb.save('example.xlsx')
標準WS名を変更
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
`example.xlsx` に作成するWS名を設定
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `Sheet` だが変更する場合は `title` で変更する
ws.title = "WorkSheetTitle"
# 保存
wb.save('example.xlsx')
複数WSを作成
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
WorkSheetを複数作成する
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `Sheet` だが変更する場合は `title` で変更する
ws.title = "WorkSheetTitle"
# 2つめのWSを定義
ws2 = wb.create_sheet("NewWorkSheet2")
# 3つめのWSを定義してポジションを設定する
# `0` だと一番先頭
ws3 = wb.create_sheet("NewWorkSheet3", 0)
# 保存
wb.save('example.xlsx')
WSタブのカラーを変更
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
WSタブのカラーを変更
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `Sheet` だが変更する場合は `title` で変更する
ws.title = "WorkSheetTitle"
# WSのtabカラーを設定する
ws.sheet_properties.tabColor = "1072BA"
# 保存
wb.save('example.xlsx')
セルに値を入れる
座標を指定
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
セルに値を入れる
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `Sheet` だが変更する場合は `title` で変更する
ws.title = "WorkSheetTitle"
# セルに値を入れる
ws["A1"] = "HOGE"
ws["B1"] = "FUGA"
# 保存
wb.save('example.xlsx')
行列表記
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
セルに値を入れる
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `Sheet` だが変更する場合は `title` で変更する
ws.title = "WorkSheetTitle"
# 行列表記でセルに値を入れる
ws.cell(row=4, column=2, value=10)
# 保存
wb.save('example.xlsx')
行列表記2
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
セルに値を入れる
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `sheet` だが変更する場合は `title` で変更する
ws.title = "worksheettitle"
# 行列表記でセルに値を入れる
v = 0
for i in range(1,10):
for n in range(1,10):
ws.cell(row=i, column=n, value=v)
v += 1
# 保存
wb.save('example.xlsx')
範囲指定
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
セルに値を入れる
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `sheet` だが変更する場合は `title` で変更する
ws.title = "worksheettitle"
# 行列表記でセルに値を入れる
v = 0
for i in range(1,10):
for n in range(1,10):
ws.cell(row=i, column=n, value=v)
v += 1
# 保存
wb.save('example.xlsx')
行を一度に出力
#!/usr/bin/env python3
import openpyxl
# カラム名
column_title = ["FirstName", "LastName"]
if __name__ == '__main__':
"""
セルに値を入れる
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `sheet` だが変更する場合は `title` で変更する
ws.title = "worksheettitle"
# カラム名と値をセットして順番にセルへ値を入れる
rows = [
column_title,
["Tarou", "Tanaka"],
["Tarou", "Suzuki"],
["Tarou", "Uchiayama"],
]
for row in rows:
ws.append(row)
# 保存
wb.save('example.xlsx')
セル内改行
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
セル内の改行
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `Sheet` だが変更する場合は `title` で変更する
ws.title = "WorkSheetTitle"
# セル内改行
ws['A1'] = "A\nB\nC"
ws['A1'].alignment = openpyxl.styles.Alignment(wrapText=True)
# 保存
wb.save('example.xlsx')
セルのスタイル設定
スタイルドキュメント
https://openpyxl.readthedocs.io/en/default/styles.html#cell-styles-and-named-styles
フォント設定
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
セルのスタイル変更
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `sheet` だが変更する場合は `title` で変更する
ws.title = "worksheettitle"
# フォントの設定
font = openpyxl.styles.Font(
name = "HGPゴシックE",
size = 15,
)
a1 = ws["A1"]
a1.font = font
a1.value = "TEST"
# 保存
wb.save('example.xlsx')
セルの枠線
#!/usr/bin/env python3
import openpyxl
from openpyxl.styles import Border, Side
if __name__ == '__main__':
"""
セルのスタイル変更
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `sheet` だが変更する場合は `title` で変更する
ws.title = "worksheettitle"
# セルの枠線
border = Border(
left=Side(
border_style="thin",
color="FF0000"
),
right=Side(
border_style="thin",
color="FF0000"
),
top=Side(
border_style="thin",
color="FF0000"
),
bottom=Side(
border_style="thin",
color="FF0000"
)
)
b2 = ws["B2"]
b2.border = border
b2.value = "TEST"
# 保存
wb.save('example.xlsx')
セルの結合
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
セルのスタイル変更
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `sheet` だが変更する場合は `title` で変更する
ws.title = "worksheettitle"
# セルの結合
ws.merge_cells("A1:E1")
ws["A1"] = "HOGE"
# 保存
wb.save('example.xlsx')
セルの塗りつぶし
#!/usr/bin/env python3
import openpyxl
from openpyxl.styles import PatternFill
if __name__ == '__main__':
"""
セルのスタイル変更
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `sheet` だが変更する場合は `title` で変更する
ws.title = "worksheettitle"
# セルの塗りつぶし
fill = PatternFill(fill_type='solid',
fgColor='FFFF0000')
b2 = ws["B2"]
b2.fill = fill
b2.value = "TEST"
# 保存
wb.save('example.xlsx')
ハイパーリンク
#!/usr/bin/env python3
import openpyxl
if __name__ == '__main__':
"""
セルのスタイル変更
"""
wb = openpyxl.Workbook()
ws = wb.active
# 標準だと `sheet` だが変更する場合は `title` で変更する
ws.title = "worksheettitle"
# 2つ目のWSを作成
ws2 = wb.create_sheet("example")
# ハイパーリンク設定
ws["A1"] = "Link"
ws["A1"].hyperlink = "example.xlsx#example!A1"
# 保存
wb.save('example.xlsx')
Excelファイル読込
Excelファイルを読込む
#!/usr/bin/env python3
from openpyxl import Workbook, load_workbook
wb = load_workbook('./example.xlsx')
ws = wb.active
for row in ws:
for cell in row:
print(cell)