PythonをつかったExcelの操作 　PythonでExcelの表を編集する

今回はopenpyxlライブラリを使ってExcelブックの表を編集して表を馴染みのあるものにデザイン変更してみた。

**やったことは次の通り。**

###**(1) 表があるExcelデータを準備する**
　　　今回はPandasを使ってcsvを取り込んだExcelブックを使用する。
　　　内容はこのような感じのもの

###**(2)　Pythonコードを書く**
　　**【PythonでやってみるExcelの操作内容】**
　　　　①A列を削除する
　　　　②セルの範囲を指定して表として定義する
　　　　③表のタイトル行(1行目)のフォントの色を変更する
　　　　④表のタイトル行(1行目)のセルの罫線をすべて白色に変更する
　　　　⑤列の列幅を設定する
　　　　⑥シート内の枠線を消す

###**(3)Pythonを実行する**

###**(4)Excelを開いて表を見てみる**

実際にPythonでやってみたかったExcel操作ができている。


**では実際にやってみる。詳細内容は下記の通り。**
---
###**■表があるExcelデータ**

【ファイル名】　Excelbook1.xlsx

![table1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075298/ae61b77d-82b9-4b2d-28cc-78c2842be70a.png)


このExcelデータは
[【記事】Pythonを使ったExcelの操作① CSVデータをExcelに取り込んで表にする]
(https://qiita.com/Nao_Ishimatsu/items/8f35d9ccbf620e89591a)
にて作成したものを使用した。

###**■Pythonコードを書く**

【ファイル名】　excel02.py

```
import openpyxl # openpyxlライブラリを使用する
from openpyxl import load_workbook  # 既存のエクセルファイルを読み込む
from openpyxl.worksheet.table import Table, TableStyleInfo # 表に名前を定義するために使用
from openpyxl.styles.fonts import Font     # セルのフォントに色を付けるために使用
from openpyxl.styles import Border, Side  # セルの罫線の設定をするために使用

# 既存のエクセルファイルを読み込む
excelbook=openpyxl.load_workbook('Excelbook1.xlsx')

# シートをアクティブにする
excelsheet = excelbook.active 

# シートの1列目を削除する
excelsheet.delete_cols(1)

# セルの範囲(A1:F5)までを表名Table1として設定する
tab = Table(displayName="Table1", ref="A1:F5")

style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False,
                       showLastColumn=False, showRowStripes=True, showColumnStripes=True)
tab.tableStyleInfo = style

excelsheet.add_table(tab)

# 表の1行目のフォントをすべて白色に変更する
excelsheet['A1'].font = openpyxl.styles.fonts.Font(color='FFFFFF')
excelsheet['B1'].font = openpyxl.styles.fonts.Font(color='FFFFFF')
excelsheet['C1'].font = openpyxl.styles.fonts.Font(color='FFFFFF')
excelsheet['D1'].font = openpyxl.styles.fonts.Font(color='FFFFFF')
excelsheet['E1'].font = openpyxl.styles.fonts.Font(color='FFFFFF')
excelsheet['F1'].font = openpyxl.styles.fonts.Font(color='FFFFFF')

# 表の1行目のセルの罫線をすべて白色に変更する
excelsheet['A1'].border = Border(top=Side(style='hair', color='FFFFFF'), bottom=Side(style='hair', color='FFFFFF'), left=Side(style='hair', color='FFFFFF'), right=Side(style='hair', color='FFFFFF'))
excelsheet['B1'].border = Border(top=Side(style='hair', color='FFFFFF'), bottom=Side(style='hair', color='FFFFFF'), left=Side(style='hair', color='FFFFFF'), right=Side(style='hair', color='FFFFFF'))
excelsheet['C1'].border = Border(top=Side(style='hair', color='FFFFFF'), bottom=Side(style='hair', color='FFFFFF'), left=Side(style='hair', color='FFFFFF'), right=Side(style='hair', color='FFFFFF'))
excelsheet['D1'].border = Border(top=Side(style='hair', color='FFFFFF'), bottom=Side(style='hair', color='FFFFFF'), left=Side(style='hair', color='FFFFFF'), right=Side(style='hair', color='FFFFFF'))
excelsheet['E1'].border = Border(top=Side(style='hair', color='FFFFFF'), bottom=Side(style='hair', color='FFFFFF'), left=Side(style='hair', color='FFFFFF'), right=Side(style='hair', color='FFFFFF'))
excel｀sheet['F1'].border = Border(top=Side(style='hair', color='FFFFFF'), bottom=Side(style='hair', color='FFFFFF'), left=Side(style='hair', color='FFFFFF'), right=Side(style='hair', color='FFFFFF'))

# A列、B列の列幅を設定する
excelsheet.column_dimensions['A'].width = 12
excelsheet.column_dimensions['B'].width = 40

# Excel内の枠線を消す
excelsheet.sheet_view.showGridLines = False

# Excelファイルを保存する
excelbook.save('Excelbook1.xlsx')
```
###**■Pythonを実行**

```
python excel02.py
```
###**■Excelを開いて表を見てみる**

![table2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075298/2c29d41f-8074-3979-ae97-eda61052f59c.png)


実際にPythonでやってみたかったExcel操作ができている。
見た目も馴染みのあるものになっている。

**次の記事**
[Pythonを使ったExcelの操作 PythonからExcelマクロを実行する](https://qiita.com/Nao_Ishimatsu/items/cf475d931d88e1f05f0d)
**前の記事**
[Pythonを使ったExcelの操作 CSVデータをExcelに取り込んで表にする](https://qiita.com/Nao_Ishimatsu/items/8f35d9ccbf620e89591a)

<table border="0" cellpadding="0" cellspacing="0"><tr><td><div style="border:1px solid #95a5a6;border-radius:.75rem;background-color:#FFFFFF;width:504px;margin:0px;padding:5px;text-align:center;overflow:hidden;"><table><tr><td style="width:240px"><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://hbb.afl.rakuten.co.jp/hgb/14fd8852.00a017ee.14fd8853.823bacf4/?me_id=1213310&item_id=20185382&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F3669%2F9784798063669.jpg%3F_ex%3D240x240&s=240x240&t=picttext" border="0" style="margin:2px" alt="" title=""></a></td><td style="vertical-align:top;width:248px;"><p style="font-size:12px;line-height:1.4em;text-align:left;margin:0px;padding:2px 6px;word-wrap:break-word"><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >Pythonプログラミング逆引き大全 400の極意 [ 金城俊哉 ]</a></p><div style="margin:10px;"><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://static.affiliate.rakuten.co.jp/makelink/rl.svg" style="float:left;max-height:27px;width:auto;margin-top:0"></a><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F%3Fscid%3Daf_pc_bbtn&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ==" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><div style="float:right;width:41%;height:27px;background-color:#bf0000;color:#fff!important;font-size:12px;font-weight:500;line-height:27px;margin-left:1px;padding: 0 12px;border-radius:16px;cursor:pointer;text-align:center;">楽天で購入</div></a></div></td></tr></table></div><br><p style="color:#000000;font-size:12px;line-height:1.4em;margin:5px;word-wrap:break-word"></p></td></tr></table>