Python - passen sich Automatisch der Breite der excel-Datei die Spalten
Neuling - ich habe ein Python-script, passt sich die Breite der verschiedenen Spalten einer excel-Datei, entsprechend der angegebenen Werte:
import openpyxl
from string import ascii_uppercase
newFile = "D:\Excel Files\abc.xlsx"
wb = openpyxl.load_workbook(filename = newFile)
worksheet = wb.active
for column in ascii_uppercase:
if (column=='A'):
worksheet.column_dimensions[column].width = 30
elif (column=='B'):
worksheet.column_dimensions[column].width = 40
elif (column=='G'):
worksheet.column_dimensions[column].width = 45
else:
worksheet.column_dimensions[column].width = 15
wb.save(newFile)
Gibt es eine Möglichkeit, durch die wir anpassen können die Breite jeder Spalte der optimale Wert, ohne explizit die Angabe für die verschiedenen Spalten (das heißt, ohne Verwendung dieses "if-elif-elif -......-elif-else - " - Struktur)?
Danke!
Verwenden Sie ein Wörterbuch von Spaltennamen und-breiten. Als Datei-format erfordert Werte pro Spalte, es gibt keinen magischen Weg, dies zu tun.
Verwandte: Auto-anpassen der Spaltenbreite mit xlwt. Die Themen rund um die Spaltenbreiten sind im Grunde die gleichen, egal, welches Paket Sie verwenden. Die verlinkten Frage hat eine Antwort, basierend auf breiten für Arial 10 (die Standard-schriftart in älteren .xls-Dateien). Eine ähnliche Technik könnte verwendet werden, für die Calibri 11 (Standard für .xlsx-Dateien).
Verwandte: Auto-anpassen der Spaltenbreite mit xlwt. Die Themen rund um die Spaltenbreiten sind im Grunde die gleichen, egal, welches Paket Sie verwenden. Die verlinkten Frage hat eine Antwort, basierend auf breiten für Arial 10 (die Standard-schriftart in älteren .xls-Dateien). Eine ähnliche Technik könnte verwendet werden, für die Calibri 11 (Standard für .xlsx-Dateien).
InformationsquelleAutor Aditya | 2016-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser konnte wahrscheinlich gemacht werden, einfach besser aus aber es macht den job. Sie wollen spielen, um mit der adjusted_width Wert nach dem, was ist gut für die schriftart, die Sie verwenden, wenn Sie, es zu sehen. Wenn Sie eine monotype können Sie es genau, aber es ist nicht eine eins-zu-eins-Korrelation, so dass Sie noch brauchen, um stellen Sie es ein bisschen.
Wenn Sie wollen bekommen Sie Lust haben und genau, ohne monotype-Sie Sortieren Briefe in der Breite und weisen Sie jeder Breite einen float-Wert, die Sie dann addieren. Dies würde erfordern, eine Dritte Schleife Parsen wird jedes Zeichen in der Zelle Wert und summieren das Ergebnis für jede Spalte und wahrscheinlich ein dictionary Sortieren Zeichen in der Breite, vielleicht übertrieben aber cool wenn du es machst.
Edit: Tatsächlich scheint es einen besseren Weg, von der Messung der visuellen Größe des Textes: link ich persönlich würde es vorziehen die matplotlib-Technik.
Hoffe ich konnte helfen, meine ersten stackoverflow Antwort =)
InformationsquelleAutor oldsea
Ich habe ein problem mit merged_cells und autosize nicht korrekt, wenn Sie das gleiche problem haben, lösen können Sie das hinzufügen der folgenden Zeilen code innerhalb von oldsea
InformationsquelleAutor Virako
Wenn möglich, sollten Sie bestimmen die Länge der längsten Eintrag in der Spalte verwenden, um die Breite gesetzt.
Ich nehme an, Sie können machen, verwenden Sie für die Einreise in ascii_uppercase.
Bin ich auf mobile atm so nicht geben kann eine konkrete code-Beispiel, aber was ich gesagt habe sollte helfen, erhalten Sie näher an, was Sie erreichen wollen.
InformationsquelleAutor n.dury