Home » Python » OpenPyXLでセル内改行

動作検証バージョン:Windows 10 + Python 3.7.3 + OpenPyXL 2.6.2

openpyxl.load_workbook()でフルパスを指定する方法を書きました。

おそらくエスケープシーケンスをご存知なかったのでしょうから、セル内改行のエスケープシーケンスも、確認しておくほうが良さそうに感じます。

Excelのセル内改行(LF)のエスケープシーケンスは「\n」です。

[スポンサードリンク]

セル内改行を確認するサンプル

以下のようなスクリプトを実行してから、C:\temp\foo.xlsxブックを開いてみてください。


import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws['A1'].value = 'AAA\nBBB'
ws['A1'].alignment = openpyxl.styles.Alignment(wrapText=True)
wb.save("c:\\temp\\foo.xlsx")

下図のとおりA1セルに文字列「AAABBB」が入力され、AとBの間でセル内改行されていることを確認できます。

実際にセル内改行させるには書式設定が必要

セル内改行(LF)を含んだ文字列を設定しているのは、
  ws['A1'].value = 'AAA\nBBB'
です。つづく、折り返して全体を表示する設定、
  ws['A1'].alignment = openpyxl.styles.Alignment(wrapText=True)
をコメンドアウトして、
  import openpyxl
  wb = openpyxl.Workbook()
  ws = wb.active
  ws['A1'].value = 'AAA\nBBB'
  # ws['A1'].alignment = openpyxl.styles.Alignment(wrapText=True)
  wb.save("c:\\temp\\foo.xlsx")
を実行した場合には、下図のような状態になります。

この状態のときも、Excelで[ホーム]タブ-[配置]グループ-[折り返して全体を表示する]ボタンをOnにするなどの操作を行えば、セル内改行が行われます。

IDLEのShellウィンドウでも「\n」を確認しましょう

「\n」は、Pythonのエスケープシーケンスです。

OpenPyXLとは無関係なコードでも、もちろん挙動を確認できます。

IDLEのShellウィンドウで、LFのエスケープシーケンス「\n」を入れず、
  print('AAABBB')
を実行した場合「AAABBB」が当然1行で出力され、

「\n」を途中に入れて、
  print('AAA\nBBB')
を実行すれば、「AAA」と「BBB」が下図のように2行で出力されます。

最終更新日時:2019-04-15 12:19

[スポンサードリンク]

Home » Python » OpenPyXLでセル内改行

TrackBack:0

TrackBack URL

Home » Python » OpenPyXLでセル内改行

Copyright © インストラクターのネタ帳 All Rights Reserved.

.