InsertDocumentFromURL in XTextTable

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: InsertDocumentFromURL in XTextTable

InsertDocumentFromURL in XTextTable

von mipa » Mi, 10.09.2008 20:10

Hallo,

ich versuche in eine Tabellenzelle per Java eine Datei einzufügen. Es muss theoretisch möglich sein, denn im Writer kann man dies problemlos über das Menü Einfügen/Datei realisieren.

Um eine Datei in ein TextDokument einzufügen, verwendet ich folgenden Code:

Code: Alles auswählen

	public void insertFile(File insertDatei, XTextRange textRange, OOTextDokument textDok) throws BKException {
		XComponent component = textDok.getTextComponent();
		XMultiServiceFactory writerFactory = (XMultiServiceFactory) UnoRuntime
				.queryInterface(XMultiServiceFactory.class, component);
		XTextDocument doc = textDok.getTextDocument();
		XText xText = doc.getText();

		XTextCursor xCursor = xText.createTextCursor();
		XPropertySet xCursorProps = (XPropertySet) UnoRuntime.queryInterface(
				XPropertySet.class, xCursor);
		xCursor.gotoRange(textRange, false);

		XDocumentInsertable insertDoc = (XDocumentInsertable) UnoRuntime
				.queryInterface(XDocumentInsertable.class, xCursor);

		PropertyValue[] aProps = new PropertyValue[] { new PropertyValue() };

		String url = BKUtils.toURL(insertDatei);

		try {
			insertDoc.insertDocumentFromURL(url, aProps);
		} catch (Exception e) {
			throw new BKException(log, "Fehler beim Einfügen der Datei "
					+ insertDatei.toString() + "\n in das Texdokument", e);
		}
	}
Nun möchte ich das gleiche in einer XTextTable machen. Wenn ich den obigen Code verwende, bekomme ich einen Fehler bei dem Befehl xCursor.gotoRange(textRange, false);, wahrscheinlich weil man in einer Tabelle einen XTextTableCursor verwenden muss.

Schreibe ich die Methode um, so dass XDocumentInsertable über mein XTableCursor ermittelt wird:

Code: Alles auswählen

XTableCursor xTableCursor = textTabelle.createCursorByCellName(cellName);	
XDocumentInsertable insertDoc = (XDocumentInsertable) UnoRuntime
				.queryInterface(XDocumentInsertable.class, xTableCursor);
dann hat das XDocumentInsertable den Wert null.

Kann mir jemand helfen?

Vielen Dank!
Michaela

Nach oben