Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでExcelファイルを操作する方法|openpyxl・xlwt・xlsxwriterの使い方徹底解説

Excelは世界で最も広く使われている表計算ソフトであり、パソコンユーザーのほとんどがスプレッドシートによるデータ管理に慣れ親しんでいます。そのため、Pythonでプログラムを開発していると、いずれExcelファイルと連携する必要が生じる場面が必ず訪れます。

幸い、PythonにはExcelファイルの作成・読み取り・書き込みを実現できるライブラリが数多く存在します。本記事では、特に重要な3つのライブラリ「openpyxl」「xlwt」「xlsxwriter」の具体的な使い方を、サンプルコード付きで解説します。

1. openpyxlで.xlsxファイルを読み書きする

openpyxlは、Excel 2010以降の形式であるxlsx/xlsm/xltx/xltmファイルの読み書きに対応したライブラリです。以下の例では、新しいワークブックを作成し、セルへデータを書き込み、最後に任意の場所へファイルを保存しています。openpyxlには便利な組み込みメソッドが多数用意されており、その使用例を順番に見ていきましょう。

サンプルコード

#openpyxl
from openpyxl import Workbook
Spreadsheet = Workbook()

# アクティブなワークシートを取得
worksheet = Spreadsheet.active

# セルに直接データを代入できる
worksheet['A1'] = 50

# append()メソッドで行単位の追加も可能
worksheet.append([5, 15, 25, 35, 45, 55])
worksheet.append([9, 19, 29, 39, 49, 59])

# Pythonの型は自動的に変換される
import datetime
t1 = datetime.datetime.now()
worksheet['A1'] = t1.year
worksheet['A2'] = t1

# ファイルを保存
Spreadsheet.save("E:\\openpyxl.xlsx")

実行結果

上記のコードを実行すると、次のような結果が得られます。

PythonでExcelファイルを操作する方法|openpyxl・xlwt・xlsxwriterの使い方徹底解説

2. xlwtで書式付きの.xlsファイルを作成する

xlwtは、Microsoft Excel 95〜2003バージョンと互換性のあるスプレッドシートファイル(.xls)を生成するための開発者向けライブラリです。セルに値を書き込むだけでなく、文字の装飾も自由に行えます。たとえば太字や斜体、文字色の変更が可能で、フォントサイズの指定にも対応しています。

以下の例では、書き込んだ数値に書式を適用して青色で表示させるとともに、日付の表示形式(D-MMM-YYなど)も指定しています。さらに、数式(Formula)をセルに埋め込むことも可能です。

サンプルコード

import xlwt
from datetime import datetime

Spreadsheet = xlwt.Workbook()
worksheet = Spreadsheet.add_sheet('Newsheet1')

# Times New Roman・青色・太字の書式を作成(数値はカンマ区切り)
format1 = xlwt.easyxf('font: name Times New Roman, color-index blue, bold on', num_format_str='#,##0.00')
format2 = xlwt.easyxf(num_format_str='D-MMM-YY')

worksheet.write(0, 0, datetime.now(), format2)
worksheet.write(0, 1, datetime.now().strftime("%B"), format2)
worksheet.write(0, 2, datetime.now().strftime("%A"), format2)
worksheet.write(1, 0, 5369.2, format1)
worksheet.write(1, 1, 1926.5, format1)
worksheet.write(1, 2, 4896.2, format1)
worksheet.write(2, 0, 5)
worksheet.write(2, 1, 10)
worksheet.write(2, 2, xlwt.Formula("A3+B3"))
Spreadsheet.save('E:\\xlwt_spreadsheet.xls')

実行結果

上記のコードを実行すると、次のような結果が得られます。

PythonでExcelファイルを操作する方法|openpyxl・xlwt・xlsxwriterの使い方徹底解説

3. xlsxwriterで高機能な.xlsxファイルを作成する

xlsxwriterは、Excel 2007形式(.xlsx)のファイルを作成できるモジュールです。先述の2つのライブラリと比べて、はるかに豊富な機能を備えています。テキストや数値、数式、ハイパーリンクを複数のワークシートに書き込めるほか、グラフ・画像の挿入や条件付き書式などにも対応しています。

以下の例では、シート内の各列に見出しを太字で設定し、数値データを書き込んだうえで、画像の挿入まで行っています。

サンプルコード

import xlsxwriter
Spreadsheet = xlsxwriter.Workbook('E:\\xlsxw_spreadsheet.xlsx')
sheet = Spreadsheet.add_worksheet()
sheet.set_column('A:A', 18)

# 強調表示用の太字フォーマットを作成
bold = Spreadsheet.add_format({'bold': True})

# シンプルなテキストと数値の書き込み
sheet.write('A1', 'Freelancer', bold)
sheet.write('A2', 'Work')
sheet.write('A3', 100)
sheet.write('A4', 1000)

sheet.write('B1', 'DECIMAL', bold)
sheet.write('B2', 17.1)
sheet.write('B3', 29.6)
sheet.write('B4', 45.9)

sheet.write('C1', 'POSITIVE', bold)
sheet.write('C2', 69)
sheet.write('C3', 53)
sheet.write('C4', 36)

sheet.write('D1', 'NEGATIVE', bold)
sheet.write('D2', -89)
sheet.write('D3', -26)
sheet.write('D4', -15)

# 画像の挿入
sheet.insert_image('E5', 'E:\\firefox.JPG')
Spreadsheet.close()

実行結果

上記のコードを実行すると、次のような結果が得られます。

PythonでExcelファイルを操作する方法|openpyxl・xlwt・xlsxwriterの使い方徹底解説

まとめ:目的別のライブラリ選び

ライブラリ対応ファイル形式読み書きおすすめの用途
openpyxl.xlsx / .xlsm / .xltx / .xltm読み書き両対応既存ファイルの編集・読み取り
xlwt.xls(Excel 95〜2003)書き込み専用旧形式ファイルの生成
xlsxwriter.xlsx書き込み専用高機能な新規ファイルの作成

既存のExcelファイルを読み取ったり編集したりしたい場合は「openpyxl」、古い.xls形式のファイルを出力したい場合は「xlwt」、ゼロから高機能な.xlsxファイルを作成したい場合は「xlsxwriter」というように、目的に合わせて使い分けるのがおすすめです。それぞれのライブラリをマスターすれば、日常業務におけるExcel作業を大幅に自動化できるでしょう。

  1. Windowsで使えるPython開発用IDEおすすめ7選|PyCharmからAtomまで徹底解説

    Windows環境でPythonの開発を始めるとき、最初に悩むのが「どのIDE(統合開発環境)を選ぶべきか」という問題です。IDEはコードの編集・実行・デバッグなどをひとつのアプリケーションで完結できる強力なツールであり、選択次第で開発効率が大きく変わります。 本記事では、Windowsで利用できる代表的なPython対応IDEを厳選し、それぞれの特徴やメリットをわかりやすく解説します。 PyCharm PyCharmはJetBrains社が開発する、Python開発で最も人気のあるIDEのひとつです。無料のコミュニティ版と有料のプロフェッショナル版が用意されており、初心者からプロフェッショ

  2. Pythonコードを高速化する11の最適化テクニック

    Pythonはコンパイル言語ほど高速ではないことは周知の事実ですが、大手企業がPythonで大規模なワークロードを処理している事例からも分かるように、決して「遅い言語」ではありません。この記事では、正しく動作するPythonプログラムをさらに速く、効率的にするために押さえておきたい最適化のヒントを11個紹介します。 ヒント1: 組み込み関数を活用する Pythonで独自に効率的なコードを書くことも可能ですが、C言語で実装された組み込み関数の速度には到底及びません。利用可能な組み込み関数はdir(__builtins__)で一覧表示できるので、車輪の再発明をする前に必ず確認しましょう。 ヒン