LoginSignup
1
4

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-01-29

今回は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

この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

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

次の記事
Pythonを使ったExcelの操作 PythonからExcelマクロを実行する
前の記事
Pythonを使ったExcelの操作 CSVデータをExcelに取り込んで表にする


1
4
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
1
4