Skip to content

Book の操作#

作成・開く・保存#

以下のようにモジュールを読み込んでおくこと

from openpyxl import Workbook

新規作成#

`wb = Workbook()

保存#

wb.save()

Info

  • book 編集後は必ず save すること(変更内容がファイルへ保存されない)
  • 既存のファイルの場合は上書きされる
  • 別名で保存は新規ファイルで保存される

開く#

wb = load_workbook(r"../sample.xlsx")

読込み専用で開く

wb = load_workbook(r"../sample.xlsx",read_only=True)

ストリームとして保存#

ファイルをストリームに保存する場合、たとえばPyramid、Flask、DjangoなどのWebアプリケーションを使用する場合は、 NamedTemporaryFile()を指定できます 。

from tempfile import NamedTemporaryFile
from openpyxl import Workbook

wb = Workbook()
with NamedTemporaryFile() as tmp:
        wb.save(tmp.name)
        tmp.seek(0)
        stream = tmp.read()

属性template = Trueを指定して、ワークブックをテンプレートとして保存できます。

wb = load_workbook('document.xlsx')
wb.template = True
wb.save('document_template.xltx')

または、この属性をFalse(デフォルト)に設定して、ドキュメントとして保存します。

wb = load_workbook('document_template.xltx')
wb.template = False
wb.save('document.xlsx', as_template=False)

Warning

ドキュメントテンプレートにドキュメントを保存するには、データ属性とドキュメント拡張子を監視する必要があります。 そうしないと、結果テーブルエンジンがドキュメントを開くことができません。

以下は失敗例

wb = load_workbook('document.xlsx')
# Need to save with the extension *.xlsx
wb.save('new_document.xlsm')
# MS Excel can't open the document
# or
# Need specify attribute keep_vba=True
wb = load_workbook('document.xlsm')
wb.save('new_document.xlsm')
# MS Excel will not open the document
# or
wb = load_workbook('document.xltm', keep_vba=True)
# If we need a template document, then we must specify extension as *.xltm.
wb.save('new_document.xlsm')
# MS Excel will not open the document