在Excel中调整单元格宽度

Rav*_*dra 16 python excel xlsxwriter

我正在使用xlsxwriter写入Excel工作表.我面临的问题是:当文本超过单元格大小时,它会被隐藏.

import xlsxwriter

workbook = xlsxwriter.Workbook("file.xlsx")
worksheet1 = workbook.add_worksheet()

worksheet1.write(1, 1,"long text hidden test-1" )
worksheet1.write(2, 1,"long text hidden test-2")
worksheet1.write(3, 1,"short-1")
worksheet1.write(4, 1,"short-2")
worksheet1.write(1, 2,"Hello world" )
worksheet1.write(2, 2,"Hello world")
worksheet1.write(3, 2,"Hello world")
worksheet1.write(4, 2,"Hello world")

workbook.close()
Run Code Online (Sandbox Code Playgroud)

我得到了什么

在此输入图像描述

调整宽度我期待什么

在此输入图像描述

Mar*_*ans 31

您可以使用set_column如下:

worksheet1.set_column(1, 1, 25)
Run Code Online (Sandbox Code Playgroud)

这定义如下:

set_column(first_col, last_col, width, cell_format, options)
Run Code Online (Sandbox Code Playgroud)

如果要自动自动调整所有列,则需要win32com按如下方式使用该接口:

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(r'file.xlsx')
ws = wb.Worksheets("Sheet1")
ws.Columns.AutoFit()
wb.Save()
excel.Application.Quit()
Run Code Online (Sandbox Code Playgroud)

使用当前的xlsxwriter代码关闭文件后,可以轻松完成此操作.请注意,您可能需要提供文件的完整路径.

  • 不错,`win32com` 解决方案是完美的。谢谢! (2认同)

Fah*_*raz 9

不幸的是,xlsxwriter不提供自动调整选项.

但是,您可以跟踪每列的最大条目,然后使用set column命令在最后设置列宽.

set_column(first_col, last_col, width, cell_format, options)
Run Code Online (Sandbox Code Playgroud)

例如,在您的情况下,您应该将B列的宽度设置为最大字符串的长度.

width= len("long text hidden test-1")
worksheet1.set_column(1, 1, width)
Run Code Online (Sandbox Code Playgroud)

  • `xlxwriter` 现在具有自动调整功能。你可以只使用“sheet.autofit()” (5认同)