So löschen Sie Inhalte aus einer Excel-Tabelle in Java?
So löschen Sie Inhalte aus einer Excel-Tabelle in eine Excel-Arbeitsmappe, die mit Java SE und Apache POI?
Sie möchten, löschen Sie alles in der Arbeitsmappe?
Nee, nur der Inhalt der aktuellen HSSFSheet
haben Sie die Antwort, die du suchst?
Nee, nur der Inhalt der aktuellen HSSFSheet
haben Sie die Antwort, die du suchst?
InformationsquelleAutor Shumon Saha | 2011-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits in früheren Kommentaren
dieser code ConcurrentModificationException werfen zu mir. Also, ich hab das modifiziert den code und es funktioniert Prima. Hier ist der code:
InformationsquelleAutor Thirupathi Sriramoji
Habe ich herausgefunden, dass removeSheetAt/createSheet ist nicht wirklich eine akzeptable Antwort, denn Sie können nicht setzen Sie die neue Platte in der richtigen position in die Arbeitsmappe, ohne Sie läuft in einen Fehler in Arbeitsblatt.setSheetOrder
Diesem code-snippet
in meiner Welt wirft einen
ConcurrentModificationException
Ich musste greifen, um
InformationsquelleAutor VoiceOfUnreason
Je nach was Inhalt, den Sie löschen möchten, können Sie entfernen Sie eine einzelne Zelle oder Zeile.
Zu löschen, das komplette Blatt iterieren über alle Zeilen, und löschen Sie Sie.
InformationsquelleAutor powerMicha
Ich weiß, dies ist ein Alter thread, aber ich denke, dass ich die beste Lösung gefunden
Was ich Tat, war nur eine neue Arbeitsmappe erstellen in der gleichen Art und speichern Sie es über die Datei wollte ich löschen.
Heres der code
Dann alles, was Sie tun müssen ist, erstellen Sie eine for-Schleife kopiert alle, aber die Seite index 0. Das ist sehr einfach zu tun. Nur mit int sheetNum = oldFile.getNumberOfSheets(); benutzen Sie dann alle Indizes, außer 0.
InformationsquelleAutor Joel Newman
Die Sie wahrscheinlich verwenden wollen
HSSFWorkbook.removeSheetAt(index)
.Bitte klären Sie Ihre ursprüngliche Frage. Sind Sie versuchen, löschen Sie die Daten in jeder Zelle, aber die Formatierung erhalten bleiben etc?
Ich versuche, Daten löschen+formatieren in jeder Zelle, als wenn das Blatt wurde gerade erstellt
Hey jkraybill, wenn Sie hinzufügen
HSSFWorkbook.createSheet()
, als Ihre Antwort passt zu Sumon ' s braucht =DFür mich entfernen eines Blattes auf einen bestimmten index gelegentlich wirft eine seltsame out of bounds exception, auch wenn das Blatt existiert an dieser Zahl. (POI 3.10), So clearing ein Blatt, anstatt neu zu erstellen, ist imo die bessere Lösung im moment.
InformationsquelleAutor jkraybill
Bekam ich auch concurrent modification exception, die auch mit den "modernen" Weg, es zu tun :
Den iterator-basierten Lösung von @Thirupathi S scheinbar geklappt, aber aus Gründen, die ich nicht genau weiß, es war die Schaffung xslx-Dateien waren nicht lesbar durch die Apple-Zahlen und OSX Vorschau (und vermutlich andere Software auch).
Ich vermute, das hat etwas zu tun mit dem iterator nicht entfernen etwas: der code des removeRow Methode ist um einiges komplexer als der einfache iterator remove-operation.
Mit alten einfachen for-Schleife mit umgekehrten index funktioniert wie ein Charme :
InformationsquelleAutor Simone Gianni
Ich denke, es ist ein Alter thread, aber ich bekomme auch ConcurrentModificationException. Basierend auf VoiceOfUnreason ich fand diese arbeiten:
InformationsquelleAutor user2381739
Den anderen iterator-Methoden schien zu funktionieren, aber Excel dann weigerte sich, die Datei zu öffnen.
Diese funktionierte für mich:
InformationsquelleAutor Chris Harlow
Diese Lösung funktioniert bei mir einwandfrei. Und berücksichtigen dabei auch Besondere Fälle, z.B. das Blatt ist leer, oder die Räume zwischen den firstRow und lastRow vorhanden sind.
InformationsquelleAutor Sten