LoginSignup
19
26

More than 5 years have passed since last update.

PythonのoepnpyxlでテンプレートファイルからExcel帳票を作成する

Posted at

1. はじめに

以前にxlsxwriterを利用したExcelの作成について記事にしましたが、xlsxwriterではExcelの読み込みができないことが分かりました。そこで今回はoepnpyxlを利用して、事前に用意したExcelテンプレートファイルからExcel帳票を作成する方法について説明したいと思います。

(以前の記事)

2. ソースコード

excelReportWithOpenpyxl.py
# -*- coding: utf-8 -*-
import openpyxl
import datetime

# report excel using template file
def write():
    # ★ポイント1
    # テンプレートファイルを読み込む
    workbook = openpyxl.load_workbook('reservationTemplate.xlsx')
    # ゼロからExcelファイルを作る場合
    #  workbook = openpyxl.Workbook()

    # ★ポイント2
    worksheet = workbook.get_sheet_by_name(u'予約')

    # ★ポイント3
    # 行、列は1開始のインデックス
    worksheet.cell(row=5, column=6).value = unicode('12345678', 'utf-8')

    # ★ポイント4
    # 書式フォーマットは再設定が必要
    currentFormat = worksheet['AA5'].number_format
    worksheet['AA5'].value = datetime.date.today()
    worksheet['AA5'].number_format = currentFormat

    # ★ポイント5
    workbook.save('reservation.xlsx')

if __name__=='__main__':
    write()

★ポイント1

最初にopenpyxl.load_workbook()でExcelのワークブックのインスタンスを生成します。
引数には読み込むExcelテンプレートファイルのファイル名を指定します。

ちなみに、ゼロからExcelファイルを作成する場合はopenpyxl.Workbook()でワークブックのインスタンスを生成します。

★ポイント2

次にworkbook.get_sheet_by_name()でワークシートを選択します。
引数にはワークシート名を指定します。unicodeで指定すれば日本語のシート名でも動作します。

★ポイント3

セルの選択方法はR1C1形式(行と列を個別に指定)とA1形式の2つがあります。
R1C1形式の場合、worksheet.cell(row=行番号, column=列番号)でセルを選択します。
行番号と列番号は0ではなく1から開始するので注意してください。
value属性でセルの値にアクセスできるので、これで値の読み取りや変更を行います。

★ポイント4

A1形式の場合、worksheet['A1']でセルを選択します。値の参照、変更はR1C1形式と同様にvalue属性を利用します。

(書式フォーマットに関する注意)

テンプレートファイルで書式フォーマットを設定している場合、number_formatで値を設定する前にフォーマットを取得して、値を設定した後、事前に取得したフォーマットをnumber_formatで再設定してください。
自分の環境では再設定しないとテンプレートで設定したフォーマットが反映されませんでした。

★ポイント5

最後にworkbook.save()でファイルに書き込みます。
引数には保存する際のファイル名を指定します。

3. さいごに

今回はoepnpyxlを利用して、事前に用意したExcelテンプレートファイルからExcel帳票を作成する方法について説明しました。
もともとxlsxwriterだとExcelファイルの読み込みができないことが今回の記事の始まりでした。xlsxwriterの機能をしっかりと調査していれば、読み込みも書き込みも可能なoepnpyxlを最初から利用していたと思います。
今後ライブラリを選定する際は、利用可能な機能を事前にしっかりと調査していきたいと思います。

19
26
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
19
26