通过libreoffice的接口可以实现对表格的操作,不过真的需要吐槽一下,表格真难看。。。。
下面言归正传,通过查官方文档,我们了解到对表格的操作都在TextTable中,所以我们需要通过工厂中获得一个XTextTable 的实例,然后根据官方文档中的相关示例(多是java的,不过好歹看懂了之后都是一个套路),实现了如下的代码。
void manipulateTable(Reference<XTextDocument> xTextDocument)
{
Reference <XMultiServiceFactory> xWriterFactory(xTextDocument,UNO_QUERY);
Reference<XInterface> xInterface = xWriterFactory->createInstance(OUString::createFromAscii("com.sun.star.text.TextTable"));
Reference<XTextTable> xTable(xInterface,UNO_QUERY);
///初始化一个4*5的表格
xTable->initialize(4,5);
///设置表格左右,上下间距
Reference<XPropertySet> xProps(xTable,UNO_QUERY);
sal_Int32 margin;
margin = 1000;
Any any_margin;
any_margin <<= margin;
///只有当HoriOrientation设置为NONE时,表格的左右间距设置才能成功
Any oriention;
oriention &