2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Excel×Pythonで作業フローを効率化する方法を調べてみた③

Last updated at Posted at 2020-05-04

#今回の目的
PythonでExcelファイルを出力するときに、書式を設定する。
※例のごとく、説明はプログラムのコメントで記載しています。

###プログラムの流れ
①sample.xlsxファイルを取り込む
②書式を多数設定する
③sample2.xlsxファイルに出力する

###前回参考
Excel×Pythonで作業フローを効率化する方法を調べてみた②
https://qiita.com/t20190127/items/023e5dd0128252f46378

#プログラム実行結果確認
※プログラムは一番下
###取り込むエクセル(sample.xlsx)
キャプチャ.JPG

###出力ファイル(sample2.xlsx)
キャプチャ.JPG

#プログラム

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を試したいなぁと思っています。

以上です(*'▽')

2
5
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
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?