使用openpyxl将多行字符串写入单元格

40 投票
4 回答
68037 浏览
提问于 2025-04-17 18:51

我正在尝试往一个单元格里写入数据,这个单元格里有多个换行符(我想是\n),但是生成的.xlsx文件里换行符被去掉了。有没有办法保留这些换行符呢?

4 个回答

5

还有一个额外的选择,你可以使用文本块 """ 这里是我的单元格信息 """,再配合文本换行的布尔值(就是对齐方式中的一个选项),这样也能得到你想要的效果。

from openpyxl import Workbook
from openpyxl.styles import Alignment

wb= Workbook()
sheet= wb.active
sheet.title = "Sheet1"

sheet['A1'] = """Line 1
Line 2
Line 3"""

sheet['A1'].alignment = Alignment(wrapText=True)

wb.save('wrap_text1.xlsx')
80

openpyxl 2 版本及以上的样式接口发生了变化。下面的代码展示了新的接口用法。

from openpyxl import Workbook
from openpyxl.styles import Alignment

wb = Workbook()
ws = wb.active # wb.active returns a Worksheet object
ws['A1'] = "Line 1\nLine 2\nLine 3"
ws['A1'].alignment = Alignment(wrapText=True)
wb.save("wrap.xlsx")
45

免责声明: 这个方法在最近版本的 Openpyxl 中不再有效。可以查看其他答案。

openpyxl 中,你可以设置 wrap_text 属性来让多行文本自动换行:

from openpyxl import Workbook

workbook = Workbook()
worksheet = workbook.worksheets[0]
worksheet.title = "Sheet1"

worksheet.cell('A1').style.alignment.wrap_text = True
worksheet.cell('A1').value = "Line 1\nLine 2\nLine 3"

workbook.save('wrap_text1.xlsx')

在这里输入图片描述

使用 XlsxWriter 模块也可以做到这一点。

下面是一个简单的示例:

from xlsxwriter.workbook import Workbook

# Create an new Excel file and add a worksheet.
workbook = Workbook('wrap_text2.xlsx')
worksheet = workbook.add_worksheet()

# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 20)

# Add a cell format with text wrap on.
cell_format = workbook.add_format({'text_wrap': True})

# Write a wrapped string to a cell.
worksheet.write('A1', "Line 1\nLine 2\nLine 3", cell_format)

workbook.close()

撰写回答