2017-12-19 10 views
0

Ich versuche, eine große Excel-Datei in Golang zu lesen. Ich muss die Anzahl der Spalten finden.Anzahl der Zeilen und Anzahl der Spalten in Excel-Tabelle

Ich verwende die https://godoc.org/github.com/360EntSecGroup-Skylar/excelize Bibliothek, aber ich konnte eine solche Funktion nicht finden.

In Python gibt es die https://xlrd.readthedocs.io/en/latest/api.html#xlrd.sheet.Sheet.ncols

ähnliches in Golang?

+1

Wenn es xlsx ist, können Sie die relevanten Teile von XML mit sehr wenig Speicher –

Antwort

2

Excel hat keine feste Anzahl von Spalten. Was Sie wollen, ist die größte Anzahl von Spalten in allen Zeilen gefunden.

Dies ist genau das, was Sheet.ncols tut. Sie können das gleiche Ergebnis mit excelize erhalten, indem Sie GetRows aufrufen, über alle Zeilen iterieren und die höchste Anzahl von Spalten in allen Zeilen finden.

+0

analysieren mein Problem ist Speicher. Ich habe ein Python-Skript, das ich nach Golang portieren möchte. Ich bin mir nicht sicher, ob Python das ganze Excel im Speicher liest. gehen: Mehr als 1 GB Speicher Python: ein paar MBs Auch in Python Ich lade und verarbeite die Datei in 13s und in gehen nur 45s zu lesen. – gosom

+1

Ich schlage vor, Sie eine Feature-Anfrage mit den Entwicklern der Go-Bibliothek, um iterative Modi im Gegensatz zu dem Laden des gesamten Blattes zu ermöglichen. – Marc

2

Es sieht aus als ob sie eine Funktion in der Bibliothek haben, die genau das tut, was Sie wollen, es ist einfach nicht öffentlich. Siehe here.

Ich würde eine PR einreichen, um zu sehen, ob dies öffentlich zugänglich gemacht werden kann. Der Grund dafür, dass Speicher ein Problem darstellt, besteht darin, dass die einzige Methode zum Abrufen der Gesamtzahl von Zeilen/Spalten in der Bibliothek darin besteht, dass für jede einzelne Zelle eine Zuordnung erstellt wird (siehe GetRows).

+0

schöner Fang. Leider liest es bei OpenFile alles im Speicher. Ich werde ein bisschen mehr untersuchen – gosom

Verwandte Themen