Writing multi-line strings into cells using openpyxl

后端 未结 3 760
迷失自我
迷失自我 2020-12-09 08:09

I\'m trying to write data into a cell, which has multiple line breaks (I believe \\n), the resulting .xlsx has line breaks removed. Is there a way to keep these line breaks?

相关标签:
3条回答
  • 2020-12-09 08:46

    Just an additional option, you can use text blocking """ my cell info here """ along with the text wrap Boolean in alignment and get the desired result as well.

    from openpyxl import Workbook
    
    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')
    
    0 讨论(0)
  • 2020-12-09 09:11

    Disclaimer: This won't work in recent versions of Openpyxl. See other answers.

    In openpyxl you can set the wrap_text alignment property to wrap multi-line strings:

    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')
    

    enter image description here

    This is also possible with the XlsxWriter module.

    Here is a small working example:

    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()
    
    0 讨论(0)
  • 2020-12-09 09:11

    The API for styles changed for openpyxl >= 2. The following code demonstrates the modern 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")
    
    0 讨论(0)
提交回复
热议问题