web-dev-qa-db-fra.com

Ajuster la largeur des cellules dans Excel

J'utilise xlsxwriter pour écrire dans une feuille Excel. Je suis confronté à un problème: lorsque le texte dépasse la taille de la cellule, il devient masqué.

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

Ce que j'obtiens

enter image description here

Ce que j'attends avec des largeurs ajustées

enter image description here

15
Ravichandra

Vous pouvez utiliser set_column comme suit:

worksheet1.set_column(1, 1, 25)

Ceci est défini comme suit:

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

Si vous souhaitez ajuster automatiquement toutes les colonnes, vous devrez utiliser le win32com interface comme suit:

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

Cela peut facilement être fait après avoir fermé le fichier en utilisant votre code xlsxwriter actuel. Remarque, vous devrez peut-être fournir un chemin d'accès complet à votre fichier.

30
Martin Evans

Malheureusement, xlsxwriter ne fournit pas d'option d'ajustement automatique.

Vous pouvez cependant suivre l'entrée la plus grande pour chaque colonne, puis définir la largeur de colonne à la fin avec la commande set column.

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

Dans votre cas par exemple, vous devez définir la largeur de la colonne B sur la longueur de la plus grande chaîne.

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