はじめに
このサイトでは、社会人なりたての私が無駄を省くための戦いをまとめています。
今回のテーマは、pythonのライブラリを用いて、Excelをいじっていきます。
ライブラリ名は、openpyxlです。
実行環境
Windows10
Python 3.10.5
openpyxlとは?
openpyxlはExcelファイル(.xlsx
)を読み書きできるツールです。
公式ドキュメント openpyxl/openpyxl-Bitbucket
詳しくはこちら!
今回はExcelファイル内のデータを読み込んで、分析するのではなく、
代入したいだけなので、pandasではなくopenpyxlを使用しています!
指定の表をExcelで作成
今回は、openpyxlを使用して表を作っていきます。
表を作る上で、セルの操作が必要です。
openpyxlを用いて、以下を操作します。
・セルの枠線
・セルの背景色
・文字の代入
セルの枠線はBorder関数、Side関数、
セルの背景色はPatternFill関数で操作できます。
border = Border(top=Side, #上枠線
bottom=Side, #下枠線
left=Side, #左枠線
right=Side) #右枠線
Side = Side(style="thin", #枠線のスタイル ex)点線、直線 etc.
color="000000") #枠線の色
color = PatternFill(patternType='solid', #塗りつぶすパターン ex)単色、ドット、縞模様 etc.
fgColor='ffffff') #背景色
以上の関数を使用して、表を作成していきます。
実践
今回は以下の表をExcelに表示していきます。
No | name | year |
---|---|---|
1 | nakano | 26 |
2 | ito | 26 |
3 | sato | 23 |
import openpyxl
from openpyxl.styles.fills import PatternFill
from openpyxl.styles.borders import Border, Side
xlsx_path = "Excelファイルのパス"
wb = openpyxl.load_workbook(xlsx_path)
ws = wb.worksheets[0]
tableList = [["No","name","year"],
["1","nakano","26"],
["2","ito","26"],
["3","sato","23"]]
gray = PatternFill(patternType='solid',fgColor='cccccc')
white = PatternFill(patternType='solid',fgColor='ffffff')
Side = Side(style="thin",color="000000")
border = Border(top=Side,bottom=Side,left=Side,right=Side)
for x in range(1,5):
for y in range(1,4):
ws.cell(row=x,column=y).value = tableList[x-1][y-1]
ws.cell(row=x,column=y).border = border
if x%2==1:
ws.cell(row=x,column=y).fill = white
else:
ws.cell(row=x,column=y).fill = gray
wb.save(xlsx_path)
上記のコードを実行すると、指定の表を作成することができました。
終わりに
セルの操作に関しては、すべて紹介できる技量がなかったので、表作成の部分に絞って紹介しました。PatternFill関数のpatternTypeや、Side関数のstyleはいじっていて面白いのでお試しください。