2015-11-12 11 views
7

Ich verwende xlsxwriter, um in Excel-Tabelle zu schreiben. Ich stehe vor dem Problem: Wenn Text mehr als Zellengröße ist, wird es versteckt.Stellen Sie die Zellenbreite in Excel ein

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

Was erhalte ich

enter image description here

Was ich mit angepassten Breiten erwarte

enter image description here

Antwort

16

Sie set_column verwenden könnte wie folgt :

worksheet1.set_column(1, 1, 25) 

Dies wird wie folgt definiert:

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

Wenn Sie automatisch alle Spalten automatisch anpassen möchten, dann müssen Sie die win32com Schnittstelle wie folgt verwenden:

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

Dies kann einfach durchgeführt werden, nachdem Sie die Datei mit Ihrem aktuellen xlsxwriter-Code geschlossen haben. Beachten Sie, dass Sie möglicherweise einen vollständigen Pfad zu Ihrer Datei angeben müssen.

+0

Schön, die 'win32com' Lösung ist perfekt. Vielen Dank! –

5

Leider bietet xlsxwriter keine Autofit-Option.

Sie können jedoch den größten Eintrag für jede Spalte verfolgen und dann die Spaltenbreite am Ende mit gesetztem Spaltenbefehl einstellen.

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

In Ihrem Fall zum Beispiel sollten Sie die Breite der B-Spalte auf die Länge der größten Zeichenfolge festlegen.

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

Irgendein Hinweis, wie man größte Einheit in der Spalte erhält !! – Ravichandra

+1

Angenommen, Sie bringen Ihre Daten aus einem Datensatz und schreiben sie in ein Excel-Blatt. Sie können den Datensatz für die maximale Länge der Zeichenfolge analysieren und die Breite festlegen. Eine spezifischere Antwort erfordert mehr Informationen. –