使用 openpyxl 将 'wrap_text' 应用于所有单元格
Apply 'wrap_text' to all cells using openpyxl
我有一个 Pandas 数据框,我正在使用 openpyxl 将其写入 XLSX。 spreadsheet 中的许多单元格包含长句,我想在 sheet 的所有内容(即每个单元格)上设置 'wrap_text'。
有办法吗?我看到 openpyxl 有一个 'Alignment' 选项用于 'wrap_text',但我看不出如何将它应用到所有单元格。
编辑:
感谢反馈,下面的方法可以解决问题。注意 - 由于样式不可变而复制。
for row in ws.iter_rows():
for cell in row:
cell.alignment = cell.alignment.copy(wrapText=True)
迭代所有单元格
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 *
测试
据推测,当您遍历单元格时,想法是应用该格式。
for row in ws.iter_rows():
for cell in row:
cell.style.alignment.wrap_text=True
这里还有更多关于如何使用自动换行样式的详细信息
Writing multi-line strings into cells using openpyxl
希望对您有所帮助。
我一直在用openpyxl>=2.5.6。假设我们要为单元格 A1 换行,那么我们可以使用下面的代码。
from openpyxl.styles import Alignment
ws['A1'].alignment = Alignment(wrap_text=True)
import os
import openpyxl
from openpyxl.styles import Alignment, Font
from openpyxl.cell import Cell
#format cells with word wrap and top alignment
for row in ws2.iter_rows():
for cell in row:
cell.alignment = Alignment(wrap_text=True,vertical='top')
更新 openpyxl v3 中的对齐方式
许多答案设置 wrapText=True
但破坏了现有的对齐选项。这样不行。
使用 openpyxl v3.0.4,我做了以下操作:
import copy
for row in ws.iter_rows():
for cell in row:
alignment = copy.copy(cell.alignment)
alignment.wrapText=True
cell.alignment = alignment
楼主的解决方法是:
cell.alignment = cell.alignment.copy(wrapText=True)
但这产生了以下警告:
DeprecationWarning: Call to deprecated function copy (Use copy(obj) or cell.obj = cell.obj + other).
cell.alignment = cell.alignment.copy(wrapText=True)
我有一个 Pandas 数据框,我正在使用 openpyxl 将其写入 XLSX。 spreadsheet 中的许多单元格包含长句,我想在 sheet 的所有内容(即每个单元格)上设置 'wrap_text'。
有办法吗?我看到 openpyxl 有一个 'Alignment' 选项用于 'wrap_text',但我看不出如何将它应用到所有单元格。
编辑:
感谢反馈,下面的方法可以解决问题。注意 - 由于样式不可变而复制。
for row in ws.iter_rows():
for cell in row:
cell.alignment = cell.alignment.copy(wrapText=True)
迭代所有单元格
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 *
测试据推测,当您遍历单元格时,想法是应用该格式。
for row in ws.iter_rows():
for cell in row:
cell.style.alignment.wrap_text=True
这里还有更多关于如何使用自动换行样式的详细信息 Writing multi-line strings into cells using openpyxl
希望对您有所帮助。
我一直在用openpyxl>=2.5.6。假设我们要为单元格 A1 换行,那么我们可以使用下面的代码。
from openpyxl.styles import Alignment
ws['A1'].alignment = Alignment(wrap_text=True)
import os
import openpyxl
from openpyxl.styles import Alignment, Font
from openpyxl.cell import Cell
#format cells with word wrap and top alignment
for row in ws2.iter_rows():
for cell in row:
cell.alignment = Alignment(wrap_text=True,vertical='top')
更新 openpyxl v3 中的对齐方式
许多答案设置 wrapText=True
但破坏了现有的对齐选项。这样不行。
使用 openpyxl v3.0.4,我做了以下操作:
import copy
for row in ws.iter_rows():
for cell in row:
alignment = copy.copy(cell.alignment)
alignment.wrapText=True
cell.alignment = alignment
楼主的解决方法是:
cell.alignment = cell.alignment.copy(wrapText=True)
但这产生了以下警告:
DeprecationWarning: Call to deprecated function copy (Use copy(obj) or cell.obj = cell.obj + other).
cell.alignment = cell.alignment.copy(wrapText=True)