Ich verwende die Apache POi HSSF-Bibliothek, um Informationen in meine Anwendung zu importieren. Das Problem ist, dass die Dateien einige extra/leere Zeilen haben, die zuerst vor dem Parsen entfernt werden müssen.Entfernen einer Zeile aus einer Excel-Tabelle mit Apache POI HSSF
Es gibt keine HSSFSheet.removeRow(int rowNum)
Methode. Nur removeRow(HSSFRow row)
. Das Problem dabei ist, dass leere Zeilen nicht entfernt werden können. Zum Beispiel:
sheet.removeRow(sheet.getRow(rowNum));
gibt eine Nullpointer auf leere Zeilen, weil getRow()
gibt null zurück. Auch, wie ich in Foren lesen, löscht nur den Zelleninhalt, aber die Zeile ist immer noch da eine leere Zeile.
Gibt es eine Möglichkeit, Zeilen (leer oder nicht) zu entfernen, ohne ein ganzes neues Blatt ohne die Zeilen zu erstellen, die ich entfernen möchte?
Da ich bereits einen Parser für Excel-Dateien, die als eine einfache Tabelle (Spaltennamen in der ersten Zeile und Daten unten) formatiert sind, und ich brauche, um den Benutzer zu warnen, wenn es leere Zeilen sind. Außerdem sind die Dateien, die ich jetzt importieren möchte, aus einer anderen Anwendung und haben viele zusätzliche Zeilen (leer oder nicht), nur um die Datei schöner aussehen zu lassen! – fmaste
OK - Ich würde nur sagen, dass Sie wahrscheinlich gut bedient sind, nur um Ihren vorhandenen Parser abzuleiten und Ihre Unterklasse leere Zeilen ignorieren zu lassen, anstatt etwas damit zu tun; Auf diese Weise können die Dateien von der anderen App immer noch gut aussehen und Sie müssen nicht auf diesen Dateien sterben. :) – delfuego
Ja. Daran denke ich auch. Aber die Datei hat Dinge wie: eine Zeile nur für die erste Spalte (die ID) und den Rest der Spalten in der Zeile darunter. Nur weil es schöner aussieht. Ich muss es eine Zeile machen und löschen. Ich denke, dass ich eine Klasse erstellen würde, die ein Blatt und eine Liste von Zeilenindizes enthält, und lösche die Indizes, wenn ich eine Zeile lösche. Es ist zu viel, aber ich muss Zeile löschen, ich verstehe nicht, warum Sie Zeile mit dieser Bibliothek nicht löschen können! – fmaste