PythonでExcel操作を自動化!openpyxlとpandasを使った業務効率化ガイド
Pythonのopenpyxlとpandasを使ったExcel操作の自動化方法を解説。読み込み、書き込み、データ分析、業務効率化の具体例を紹介。
はじめに
Excelはビジネスシーンで広く使われていますが、手作業でのデータ入力や集計は時間がかかり、ミスも発生しやすいです。Pythonを使えば、Excel操作を自動化し、業務効率を大幅に向上させることができます。本記事では、openpyxlとpandasという2つのライブラリを使ったExcel操作の基本から応用までを解説します。
PythonでExcelを操作するメリット
必要なライブラリのインストール
まず、openpyxlとpandasをインストールします。
pip install openpyxl pandas
openpyxlでExcelファイルを操作する
Excelファイルの読み込み
import openpyxl
<h1>ワークブックを開く</h1>
wb = openpyxl.load_workbook('sample.xlsx')
<h1>アクティブなシートを取得</h1>
ws = wb.active
<h1>シート名を指定して取得</h1>
ws = wb['Sheet1']
<h1>セルの値を取得</h1>
print(ws['A1'].value)
print(ws.cell(row=1, column=1).value)
データの書き込み
ws['A1'] = 'Hello'
ws.cell(row=2, column=1, value='World')
<h1>保存</h1>
wb.save('sample.xlsx')
行・列の操作
<h1>行を追加</h1>
ws.append([1, 2, 3])
<h1>列を挿入</h1>
ws.insert_cols(2)
<h1>行を削除</h1>
ws.delete_rows(2)
セルの書式設定
from openpyxl.styles import Font, Alignment, PatternFill
<h1>フォント設定</h1>
ws['A1'].font = Font(bold=True, color='FF0000')
<h1>背景色</h1>
ws['A1'].fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')
<h1>配置</h1>
ws['A1'].alignment = Alignment(horizontal='center', vertical='center')
グラフの作成
from openpyxl.chart import BarChart, Reference
chart = BarChart()
data = Reference(ws, min_col=1, min_row=1, max_col=3, max_row=5)
chart.add_data(data, titles_from_data=True)
ws.add_chart(chart, 'E1')
pandasでExcelデータを分析する
Excelファイルの読み込み
import pandas as pd
<h1>全シートを読み込み</h1>
df = pd.read_excel('sample.xlsx', sheet_name=None)
<h1>特定のシートを読み込み</h1>
df = pd.read_excel('sample.xlsx', sheet_name='Sheet1')
データの整形と集計
<h1>列の選択</h1>
df = df[['列名1', '列名2']]
<h1>条件フィルタ</h1>
df_filtered = df[df['列名'] > 100]
<h1>グループ化と集計</h1>
df_grouped = df.groupby('カテゴリ').sum()
<h1>ピボットテーブル</h1>
pivot = pd.pivot_table(df, values='売上', index='月', columns='商品', aggfunc='sum')
データの書き出し
<h1>新しいExcelファイルに書き出し</h1>
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
実践的な自動化例
例1: 複数Excelファイルの結合
import glob
all_files = glob.glob('data/*.xlsx')
df_list = []
for file in all_files:
df = pd.read_excel(file)
df_list.append(df)
combined_df = pd.concat(df_list, ignore_index=True)
combined_df.to_excel('combined.xlsx', index=False)
例2: 売上レポートの自動作成
<h1>売上データを読み込み</h1>
df = pd.read_excel('sales.xlsx')
<h1>月別・商品別の売上集計</h1>
monthly_sales = df.groupby(['月', '商品'])['売上'].sum().reset_index()
<h1>ピボットテーブルで見やすく</h1>
pivot = monthly_sales.pivot(index='月', columns='商品', values='売上')
pivot.to_excel('report.xlsx')
例3: 条件に応じたセル色付け
import openpyxl
from openpyxl.styles import PatternFill
wb = openpyxl.load_workbook('data.xlsx')
ws = wb.active
red_fill = PatternFill(start_color='FF0000', end_color='FF0000', fill_type='solid')
for row in ws.iter_rows(min_row=2, max_col=ws.max_column):
if row[0].value < 50: # 例えばA列の値が50未満なら赤色
for cell in row:
cell.fill = red_fill
wb.save('colored.xlsx')
注意点とベストプラクティス
まとめ
Pythonのopenpyxlとpandasを使えば、Excel操作の自動化が簡単に実現できます。最初は小さなタスクから始め、徐々に複雑な処理に挑戦してみてください。これにより、業務効率が大幅に向上し、よりクリエイティブな仕事に時間を割けるようになります。
ぜひ、日々の業務にPythonを取り入れてみてください。