Java: loadComponentFromURL wie benutzen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

chebrise
**
Beiträge: 20
Registriert: So, 03.06.2007 21:35
Wohnort: Tor zum Sauerland
Kontaktdaten:

Java: loadComponentFromURL wie benutzen

Beitrag von chebrise »

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.

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();
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):

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());
		}
		
	}

}
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Java: loadComponentFromURL wie benutzen

Beitrag von hol.sten »

chebrise hat geschrieben:

Code: Alles auswählen

...
			xSpreadsheetComponent = xComponentLoader
					.loadComponentFromURL("file://C:/BerichtTemplate.ods", "_blank", 0,
							loadProps);
...
Wenn du unter Windows statt mit ""file://C:/BerichtTemplate.ods"" das File mit ""file:///C:/BerichtTemplate.ods"" lädst, sollte es klappen.
chebrise hat geschrieben:Ja, und leider gibt mir die API nicht die Infos die ich benötige... ein Beispiel wäre super.
Hier ein Beispiel: http://user.services.openoffice.org/en/ ... =45&t=1844
chebrise
**
Beiträge: 20
Registriert: So, 03.06.2007 21:35
Wohnort: Tor zum Sauerland
Kontaktdaten:

Re: Java: loadComponentFromURL wie benutzen

Beitrag von chebrise »

von mir einen ehrlichen Dank... schlimm wenn man vor so einer Mauer steht.
Antworten