我需要使用OpenOffice Java API复制文档部分并将其粘贴到另一个文档部分。到目前为止,我已设法复制源文档部分的文本并将其粘贴到目标文档的部分(参见下面的示例)。
然而,问题是非文本元素(图形,格式,表格等)不会粘贴到目标文档上。
我用来提取源部分文本的代码是:
// Read source file text
XComponent xComponentSource = this.ooHelper.loadDocument("file://" + fSource);
// Get sections
XTextSectionsSupplier textSectionsSupplierSource = (XTextSectionsSupplier)UnoRuntime.queryInterface(XTextSectionsSupplier.class, xComponentSource);
XNameAccess nameAccessSource = textSectionsSupplierOrigen.getTextSections();
// Get sections by name
XTextSection textSectionSource = (XTextSection)UnoRuntime.queryInterface(XTextSection.class, nameAccessOrigen.getByName("SeccEditable"));
//Get section text
String sectionSource = textSectionSource.getAnchor().getString();
要将文本粘贴到目标部分,选择该部分的代码是相同的,我设置了字符串:
textSectionDest.getAnchor().setString(sectionSource);
我已阅读API Javadoc,但我没有找到任何复制整个部分的方法。有没有办法做到这一点?
答案 0 :(得分:1)
我遇到了同样的问题。我最后通过创建两个游标进行求解,一个在我想要复制的内容的开头,然后在内容的末尾使用另一个,然后将第一个的光标选择扩展到第二个。这在第一个游标上使用gotoRange方法,传入第二个游标,并使用True告诉它扩展选择。
光标示例: http://api.openoffice.org/docs/DevelopersGuide/Text/Text.xhtml#1_3_1_1_Editing_Text
然后我创建了一个包含选择的autoText容器,组和元素。使用自动文本条目的applyTo方法将内容插入/粘贴到光标位置。我使用guid作为autoText容器的名称,因此它将是唯一的,然后在我完成时删除容器。
自动图文集示例: http://api.openoffice.org/docs/DevelopersGuide/Text/Text.xhtml#1_3_1_6_Auto_Text
如果你愿意,我可以发布我的代码,但是它是用Python编写的。