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
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]
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);
}
}
[/code]
Nun möchte ich das gleiche in einer XTextTable machen. Wenn ich den obigen Code verwende, bekomme ich einen Fehler bei dem Befehl [b]xCursor.gotoRange(textRange, false);[/b], wahrscheinlich weil man in einer Tabelle einen XTextTableCursor verwenden muss.
Schreibe ich die Methode um, so dass XDocumentInsertable über mein XTableCursor ermittelt wird:
[code]XTableCursor xTableCursor = textTabelle.createCursorByCellName(cellName);
XDocumentInsertable insertDoc = (XDocumentInsertable) UnoRuntime
.queryInterface(XDocumentInsertable.class, xTableCursor);
[/code]
dann hat das XDocumentInsertable den Wert null.
Kann mir jemand helfen?
Vielen Dank!
Michaela