web-dev-qa-db-ja.com

openpyxlを使用して「wrap_text」をすべてのセルに適用する

私はPandasデータフレームをopenpyxlを使用してXLSXに書き出しています。スプレッドシートのセルの多くに長い文が含まれているので、シート(つまり、すべてのセル)。

これを行う方法はありますか? openpyxlに 'wrap_text'の 'Alignment'オプションがあるのを見ましたが、これをすべてのセルに適用する方法がわかりません。

編集:

フィードバックのおかげで、次のことがうまくいきます。注-スタイルは不変であるため、コピーしてください。

for row in ws.iter_rows():
    for cell in row:      
        cell.alignment =  cell.alignment.copy(wrapText=True)
7
DerRabe

おそらく、セルを反復処理するときは、その場所でフォーマットを適用することが考えられます。

for row in ws.iter_rows():
    for cell in row:
        cell.style.alignment.wrap_text=True

ここでテキストの折り返しスタイルを使用する方法についてもかなり詳しく説明しています openpyxlを使用して複数行の文字列をセルに書き込む

お役に立てれば。

7
Allan B

私はopenpyxl> = 2.5.6を使用しています。セルA1のテキストを折り返したいとしましょう。次のコードを使用できます。

from openpyxl.styles import Alignment

ws['A1'].alignment = Alignment(wrap_text=True)
14
SuperNova

すべてのセルを繰り返す

  for rows in ws.iter_rows(min_row=1, min_col=1):
    for cell in rows:
      print('cell %s %s' % (cell.coordinate,cell.value))

* Python:3.4.2でテスト済み-openpyxl:2.4.1 *

1
stovfl