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
Ce que j'attends avec des largeurs ajustées
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.
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)