/ / Ajustar el ancho de celda en Excel - python, excel, xlsxwriter

Ajustar el ancho de celda en Excel - python, excel, xlsxwriter

Estoy utilizando xlsxwriter para escribir en la hoja de Excel. Me enfrento al problema: cuando el texto es más que el tamaño de celda, se está ocultando.

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

Lo que estoy consiguiendo

enter image description here

Lo que estoy esperando con los anchos ajustados.

enter image description here

Respuestas

22 para la respuesta № 1

Podrías usar set_column como sigue:

worksheet1.set_column(1, 1, 25)

Esto se define de la siguiente manera:

set_column(first_col, last_col, width, cell_format, options)

Si desea que todas las columnas se ajusten automáticamente, deberá utilizar el comando win32com interfaz de la siguiente manera:

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

Esto se puede hacer fácilmente después de cerrar el archivo con su código xlsxwriter actual. Tenga en cuenta que es posible que deba proporcionar una ruta completa a su archivo.


5 para la respuesta № 2

Desafortunadamente, xlsxwriter no proporciona la opción de ajuste automático.

Sin embargo, puede rastrear la entrada más grande para cada columna y luego establecer el ancho de la columna al final con el comando establecer columna.

set_column(first_col, last_col, width, cell_format, options)

En su caso, por ejemplo, debe establecer el ancho de la columna B a la longitud de la cadena más grande.

width= len("long text hidden test-1")
worksheet1.set_column(1, 1, width)