web-dev-qa-db-ja.com

xlwtモジュールを使用してセルに複数行の文字列を書き込む

Python:xlwtモジュールだけで複数行の文字列をExcelセルに書き込む方法はありますか? (openpyxlモジュールの使用を提案する回答を見ました)

sheet.write()メソッドは\ nエスケープシーケンスを無視します。だから、xlwtだけ、それは可能ですか?前もって感謝します。

17
user2782845

python-Excel Google Group で答えを見つけました。オプションのstyle引数を指定してsheet.write()を使用し、セルのワードラップを有効にすると、うまくいきます。最小限の作業例を次に示します。

import xlwt
book = xlwt.Workbook()
sheet = book.add_sheet('Test')

# A1: no style, no wrap, despite newline
sheet.write(0, 0, 'Hello\nWorld')

# B1: with style, there is wrap
style = xlwt.XFStyle()
style.alignment.wrap = 1
sheet.write(0, 1, 'Hello\nWorld', style)
book.save('test.xls')

セルA1では改行なしでHelloWorldが表示されますが、セルB1ではHello\nWorld(つまり、改行あり)。

27
ojdo

XFStyleを使用せず、代わりにeasyxfを使用する場合は、次のようになります。

import xlwt

style_head = xlwt.easyxf('alignment: wrap True')

row = 1
cell = 1
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet()
sheet.write(row, cell, 'cell value', style_head)
2
Samo A.

あなたが試すことができるいくつかのことがあります:

  1. Windowsは、Unix/Linuxとは異なる方法で新しい行を処理します。 \n(改行)文字は標準のUnixメソッドであり、Pythonでも使用されますが、Windowsではキャリッジリターンと改行が必要です。したがって、\n\r\nに置き換えてみることができます。
  2. これが機能しない場合は、数式内でASCII文字{chr(13)およびchr(10)}に置き換えてみてください。
  3. それでもうまくいかない場合は、試してみる価値があるかもしれません この記事 これは、問題に取り組むためのかなり長い道のりを示唆しています。
0
ChrisProsser