Neu definieren Benannte Excel-Bereich dann Speichern, Apache-POI

Apache POI, ich bin in der Lage, einen benannten Bereich:

XSSFName[] ranges = new XSSFName[workbook.getNumberOfNames()];
for (int i = 0; i < _wb.getNumberOfNames(); i++)
    ranges[i] = workbook.getNameAt(i);

Mit, dass, ich bin in der Lage, cell zu einem AreaReference:

AreaReference area = new AreaReference(ranges[0].getRefersToFormula());

... Und dann endlich bekomme ich alle Zellen innerhalb dieses Bereichs:

CellReference[] cells = area.getAllReferencedCells();

Dass alles funktioniert Prima. Burt ich habe einen Anwendungsfall, in dem ich neu zu definieren den Bereich, der den Bereich abdeckt. Gibt es eine Möglichkeit, das zu tun? Ich merke, dass die range.getRefersToFormula() - Methode einen String zurückgeben, so etwas wie MySheet!$A$1:$B$8. Es ist ein range.setRefersToFormula(String formula), aber ich habe zu glauben, dass es einen Weg gibt, andere als Rückgriff auf das schreiben einer excel-Bereich der Formel-parser auf meine eigenen. Gibt es keine Möglichkeit generieren ein AreaReference mit einem Satz zu Cell Verweise von etwas mehr geben-sicher? Habe ich tatsächlich zu generieren String zur Darstellung der neuen Reihe? Ich würde denken, es wäre die API irgendwo, mir damit zu helfen, aber ich kann nicht scheinen, um es zu finden.

Update

Fand ich einige API, aber es scheint nicht zu funktionieren, zumindest ist es nicht korrekt gespeichert. Hier ist, was ich Tat.

AreaReference newArea = new AreaReference(firstCell, lastCell);
ranges[0].setRefersToFormula(newArea.formatAsString())

Scheint es um die Formel richtig, aber wenn ich den stream der Arbeitsmappe wieder auf die Festplatte, die Reichweite ist völlig falsch.

Schreibe einen Kommentar