Apache POI. Kopieren sheets
Bin ich mit apache poi erstellen Sie ein excel-Dokument. Erstellen neues Blatt in der Arbeitsmappe Schreibe ich folgenden code:
Workbook wb = new HSSFWorkbook();
Sheet sh = wb.createSheet();
diesen code erstellen und hinzufügen von Blatt auf Arbeitsmappe. Aber ich will Blatt früher und fügen Sie es anschließend auf Arbeitsmappe. Smth like this:
Sheet sh = new HSSFSheet();
wb.addSheet(sh);
Ich brauche so etwas, da will ich auch kopieren von Daten von einem Blatt, von einer Arbeitsmappe in ein anderes Blatt einer anderen Arbeitsmappe(Arbeitsmappe-Schnittstelle hat Methode Sheet cloneSheet(int)
). Aber Arbeitsmappe-Schnittstelle hat keine Methode, wie addSheet(Blatt sh).
Auch HSSFWorkbook final ist Klasse, so kann ich nicht verlängern, es zu implementieren add-Methode
Wie kann ich dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht nur nehmen Sie ein Blatt-Objekt aus einer Arbeitsmappe, und fügen Sie es zu einer anderen Arbeitsmappe.
Was Sie tun müssen, ist zu öffnen Sie die alte Arbeitsmappe und die neuen Arbeitsmappen zur gleichen Zeit, und erstellen Sie das Blatt in der neuen Arbeitsmappe. Als Nächstes Klonen Sie alle die Stile, die Sie verwendet in der alten Platte auf die neue (HSSFCellStyle hat eine Methode für das Klonen einen Stil aus einer Arbeitsmappe in eine andere). Schließlich iterieren über alle Zellen und kopieren Sie Sie auf.
Okay, ich versuchte zu tun, was Gagravarr oben gesagt. Diese Lösung funktioniert für mich. Dieser code wird funktionieren, wenn die Blätter haben keine Tische, etc. Wenn die Blätter enthalten einfachen text (String, boolean, int, usw), Formeln, diese Lösung funktioniert.
Wenn Ihre Forderung zu kopieren vollen Blättern, ohne oder etwas hinzuzufügen. Ich denke, dass Der Prozess der Beseitigung funktioniert besser und schneller dann der obige code. Und Sie nicht haben, um Angst zu verlieren, Formeln, Zeichnungen, Tabellen, Stile, Schriften, etc.