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

use*_*631 20 python openpyxl

我正在尝试将数据写入一个具有多个换行符的单元格(我相信\n),生成的.xlsx删除了换行符.有没有办法保持这些换行符?

Cha*_*ark 38

针对openpyxl> = 2更改样式的API.以下代码演示了现代API.

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")
Run Code Online (Sandbox Code Playgroud)

  • 是的,API 已更改,并且您的代码可以正常工作。谢谢你! (2认同)

jmc*_*ara 30

openpyxl您可以设置wrap_textalignment属性以包装多行字符串:

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')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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()
Run Code Online (Sandbox Code Playgroud)

  • 最新的 OpenPyXL 文档在 [这里](https://openpyxl.readthedocs.org/en/latest/index.html)。但是,我通过阅读代码(并通过对我正在寻找的内容有一个大致的了解)弄清楚了上面的语法。XlsxWriter 有详细的 [docs](https://xlsxwriter.readthedocs.org/en/latest/contents.html) 和 [examples](https://xlsxwriter.readthedocs.org/en/latest/examples.html)。 (2认同)

小智 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')
Run Code Online (Sandbox Code Playgroud)