HSSFWorkBook cloneSheet schlägt fehl

Status
Nicht offen für weitere Antworten.

Reth

Mitglied
Hallo allerseits,

habe gerade ein Problem mit o.g. Methode.

Ich öffne eine Exceldatei, die einen Reiter als Vorlage enthält.
Von diesem will ich mit cloneSheet über HSSFWorkBook die eigentlichen Reiter erzeugen.

Nun bekomme ich beim Aufruf von cloneSheet aber immer folgenden Fehler:

Code:
java.lang.RuntimeException: The class org.apache.poi.hssf.record.DrawingRecord needs to define a clone method

In der Vorlage wird kein Bild verwendet und dennoch taucht dieser Fehler auf (einige Zellen haben Ränder und ne Hintergrundfarbe, liegts vielleicht daran?)!

Kann mir da jmd. weiterhelfen?

Das nächste Problem wäre dann: Wie gebe ich einem geclonten Sheet einen neuen Namen?

Vielen Dank schon einmal

Ciao
 

Reth

Mitglied
Also den ersten Teil (klonen) kann ich zumindest mal als gelöst melden!

Ich habe den entsprechenden Bereich der Vorlage mal mit Copy&Paste in ein neues leeres Dokument gebracht und dieses als Vorlage genommen. Nun klappt's auch mit dem Klonen!

Wo da aber in der anderen Vorlage ein Bild versteckt gewesen sein soll weiß ich auch nicht!

Bleibt nur noch das Problem mit dem Umbenennen geklonter Sheets!?

Wenn ich ein geklontes Sheet habe, kenne ich weder dessen Namen, noch dessen Index im WorkBook.
Dummerweise ist die WorkBook-API aber so, dass ich nur mit dem Namen auf den Index (und umgekehrt) schließen kann, das Sheet mir aber weder seinen Namen noch seinen Index nennen kann!

Und nur mit dem Index des Sheets kann ich ihm nen neuen Namen im WorkBook geben!

Hat hier jmd. ne gute Idee?

Danke schon mal!

Ciao
 

Reth

Mitglied
Also dann nochmal ich mit meiner Idee (sehr unschön) für die Umbenennung:

Code:
// Nummer des aktuellen Sheets ermitteln, um dessen Namen ändern zu können
for (int i = 0; i <= workBook.getNumberOfSheets(); i++)
{
    if (workBook.getSheetAt(i).equals(aktSheet))    // aktSheet soll umbenannt werden
    {
        workBook.setSheetName(i, "Neuer Name");
        break;
    }
}

Ciao
 
G

goeby

Gast
Das geklonte Blatt landet immer am Ende. Daher empfehle ich:
Code:
workBook.setSheetName(workbook.getNumberOfSheets()-1 "Neuer Name");
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben