尝试使用 openpyxl 在合并单元格中换行文本

问题描述 投票:0回答:1

我无法将文本包装在合并的单元格中。顶部标题是我想要的,但我的代码给了我底部标题。有谁知道我在这里缺少什么?

worksheet.cell(row = 1, column = 6).value = 'text to be wrapped'
worksheet.merge_cells('F1:I1')
worksheet['F1'].alignment = Alignment(vertical = "top", horizontal = "center", wrap_text = True)
python python-3.x openpyxl
1个回答
1
投票

如上所述,代码有效,您应该能够通过检查功能区主页选项卡、对齐部分和/或单元格格式设置(右键单击“设置单元格格式”--> 对齐选项卡)看到这一点。

从您的图像来看,似乎确实没有应用对齐,如果是这样,这似乎是您的安装所特有的。我建议您仔细检查您正在查看正确的工作簿/工作表,并确保您的 Openpyxl 版本是最新版本。

如果有帮助;
由于单元格对齐参数的设置对于默认大小可能并不明显,因此尽管示例屏幕截图已调整行、列和字体的大小,但下面的代码包括设置与示例屏幕截图类似的这些参数 该代码创建一个新的工作簿/工作表,但显然这些设置可以应用于现有的工作表。

from openpyxl import Workbook
from openpyxl.styles import Alignment, Font, PatternFill

### Set Font
font_style = Font(
   name="Calibri",
   b=True,
   color="000000",
   sz=20.0,
)
### Fill Colour
fuchsia_fill = PatternFill(start_color="F4B084", end_color="F4B084", fill_type ="solid")

### Create Work Book & Sheet
wb = Workbook()
worksheet = wb.active

### Add Text to the top left cell
worksheet.cell(row=1, column=6).value = 'Registration Renewals Report for May 2023'
### Merge top left cell with the next 3 cells
worksheet.merge_cells('F1:I1')
### Set column and row sizing
worksheet.column_dimensions['F'].width = 18
worksheet.column_dimensions['I'].width = 16
worksheet.row_dimensions[1].height = 52
### Apply the font and alignment and fill to the top left cell
topleftcell = worksheet['F1']
topleftcell.font = font_style
topleftcell.alignment = Alignment(vertical="top", horizontal="center", wrap_text=True)
topleftcell.fill = fuchsia_fill

### Save workbook
wb.save('foo.xlsx')

您应该期望得到这样的标题

© www.soinside.com 2019 - 2024. All rights reserved.