#今回の目的
PythonでExcelファイルを出力するときに、書式を設定する。
※例のごとく、説明はプログラムのコメントで記載しています。
###プログラムの流れ
①sample.xlsxファイルを取り込む
②書式を多数設定する
③sample2.xlsxファイルに出力する
###前回参考
Excel×Pythonで作業フローを効率化する方法を調べてみた②
https://qiita.com/t20190127/items/023e5dd0128252f46378
#プログラム実行結果確認
※プログラムは一番下
###取り込むエクセル(sample.xlsx)
#プログラム
file_edit.py
import pathlib
import openpyxl
from openpyxl.styles import Alignment, PatternFill, Font, Border, Side
import csv
#エクセルファイルを取得
wb = openpyxl.load_workbook("./data/sample.xlsx")
#sheet「名:Sheet1」を取得
ws = wb["Sheet1"]
#セルA1のデータを出力 ※パターン1
print(ws["A1"].value) #A1セルを指定して取得
#セルA1のデータを出力 ※パターン2
row1 = ws[1] #sheet「名:Sheet1」の1行目を取得
print(row1[0].value) #1行目の1列目を取得⇒結果、A1のセル
#全データを出力
print("全データ>")
for row in ws.rows:
for cell in row:
print(cell.value)
#セルA1のデータを書き換え
ws["A1"].value = "★A1です"
#セルA1のフォント変更(ゴシック、12サイズ、太、青)
font_header = Font(name="ゴシック", size=12,bold=True,color="0000FF")
ws["A1"].font = font_header
#セルA1塗りつぶし(灰色)
ws["A1"].fill = PatternFill(patternType="solid", fgColor="808080")
#複数セルA5~D6の塗りつぶし(緑色)
for rows in ws["A5":"D6"]:
for cell in rows:
cell.fill = PatternFill(patternType="solid", fgColor="99FFCC")
#メモ
#条件で色を変える(CellIsRule / conditional_formatting.add)
#カラースケール(ColorScaleRule / conditional_formatting.add)
#セルA1の値位置(中央寄せ、下)
ws["A1"].alignment = Alignment(horizontal="center", vertical="bottom")
#A列の書式変更(列幅)
ws.column_dimensions["A"].width= 30
#セルB2のフォーマット変更( 3桁カンマ区切り)
ws["B2"].number_format = "#,##0"![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/350277/64e2c4b3-8faa-fd1e-4dac-0054fffa42a7.jpeg)
#セルB2の枠を設定(細い、黒)
side = Side(style="thin", color="000000")
border = Border(left=side,right=side,top=side,bottom=side)
ws["B2"].border = border
#セルA2,A3のセル結合
ws.merge_cells("A2:A3")
#読み込んだエクセルを別名で保存
#※上書きの場合は読み込みファイルパスを指定
wb.save("./data/sample2.xlsx")
#まとめ
どうでしょうか。前回から比べると、仕事でつかえる形になってきている気がします。
また、次回はグラフ・PDFを試したいなぁと思っています。
以上です(*'▽')