Java: loadComponentFromURL wie benutzen
Verfasst: Do, 05.05.2011 17:26
hallo Forum,
ich bin leider noch nicht über den DeveloperGuide (Java) hinaus. Mit loadComponentFromURL() will ich ein Calc Dokument als Vorlage laden. Leider bekomme ich eine NullPointerException wenn es getSheets() versucht.
Ja, und leider gibt mir die API nicht die Infos die ich benötige... ein Beispiel wäre super.
...oder irgendeine Art Tip.
Moderation,4: Betreff um Programmiersprache ergänzt
funktionieren tut es so. Aber es wird ein leeres Dokument geladen (mal die ganze Klasse):
ich bin leider noch nicht über den DeveloperGuide (Java) hinaus. Mit loadComponentFromURL() will ich ein Calc Dokument als Vorlage laden. Leider bekomme ich eine NullPointerException wenn es getSheets() versucht.
Code: Alles auswählen
PropertyValue[] loadProps = new PropertyValue[0];
// get Calc Component
try {
xSpreadsheetComponent = xComponentLoader
.loadComponentFromURL("file://C:/BerichtTemplate.ods", "_blank", 0,
loadProps);
} catch (IOException e) {
logger.error(e.getMessage());
} catch (IllegalArgumentException e) {
logger.error(e.getMessage());
}
// get Calc Document
xSpreadsheetDocument = (XSpreadsheetDocument) UnoRuntime
.queryInterface(XSpreadsheetDocument.class,
xSpreadsheetComponent);
// get calc tables
xSpreadsheets = xSpreadsheetDocument.getSheets();
...oder irgendeine Art Tip.
Moderation,4: Betreff um Programmiersprache ergänzt
funktionieren tut es so. Aber es wird ein leeres Dokument geladen (mal die ganze Klasse):
Code: Alles auswählen
import org.apache.log4j.Logger;
import com.sun.star.beans.PropertyValue;
import com.sun.star.container.NoSuchElementException;
import com.sun.star.frame.XComponentLoader;
import com.sun.star.io.IOException;
import com.sun.star.lang.IllegalArgumentException;
import com.sun.star.lang.IndexOutOfBoundsException;
import com.sun.star.lang.WrappedTargetException;
import com.sun.star.lang.XComponent;
import com.sun.star.sheet.XSpreadsheet;
import com.sun.star.sheet.XSpreadsheetDocument;
import com.sun.star.sheet.XSpreadsheets;
import com.sun.star.table.XCell;
import com.sun.star.uno.UnoRuntime;
/**
* startet das Office Dokument
*/
public class BerichtMonat {
private static Logger logger = Logger.getRootLogger();
private XComponentLoader xComponentLoader;
private XComponent xSpreadsheetComponent;
private XSpreadsheetDocument xSpreadsheetDocument;
private XSpreadsheets xSpreadsheets;
private Object sheet;
private XSpreadsheet xSpreadsheet;
public BerichtMonat(XComponentLoader xComponentLoader) {
// der Loader wird in der Action erstellt
this.xComponentLoader = xComponentLoader;
ini();
}
private void ini() {
PropertyValue[] loadProps = new PropertyValue[0];
try {
xSpreadsheetComponent = xComponentLoader
.loadComponentFromURL("private:factory/scalc", "_blank", 0,
loadProps);
} catch (IOException e) {
logger.error(e.getMessage());
} catch (IllegalArgumentException e) {
logger.error(e.getMessage());
}
xSpreadsheetDocument = (XSpreadsheetDocument) UnoRuntime
.queryInterface(XSpreadsheetDocument.class,
xSpreadsheetComponent);
xSpreadsheets = xSpreadsheetDocument.getSheets();
xSpreadsheets.insertNewByName("Bericht Monat", (short) 0);
try {
sheet = xSpreadsheets.getByName("Bericht Monat");
} catch (NoSuchElementException e) {
logger.error(e.getMessage());
} catch (WrappedTargetException e) {
logger.error(e.getMessage());
}
}
public void startDokument() {
// object -> XSpreedsheet
xSpreadsheet = (XSpreadsheet) UnoRuntime.queryInterface(XSpreadsheet.class, sheet);
fillDocument();
}
private void fillDocument() {
XCell xCell = null;
try {
xCell = xSpreadsheet.getCellByPosition(0, 0);
xCell.setValue(5); // set value to Cell
xCell = xSpreadsheet.getCellByPosition(0, 1);
xCell.setValue(21); // set value to Cell
xCell = xSpreadsheet.getCellByPosition(0, 2);
xCell.setFormula("=sum(A1:A2)"); // set Formula to Cell
} catch (IndexOutOfBoundsException e) {
logger.error(e.getMessage());
}
}
}