gpt4 book ai didi

c# - 如何使用 C# 在 OpenOffice.org uno 中创建 XTextTable?

转载 作者:太空宇宙 更新时间:2023-11-03 11:52:58 25 4
gpt4 key购买 nike

Discussion on OOoForum.org

在 python 中,使用 pyuno,我可以这样做:

table = self.model.createInstance("com.sun.star.text.TextTable")

这在 C# 中似乎不起作用。这是我的测试代码(我意识到我可能不需要所有这些 using 语句,但我正在改编别人的代码):

using System;
using unoidl.com.sun.star.lang;
using unoidl.com.sun.star.uno;
using unoidl.com.sun.star.bridge;
using unoidl.com.sun.star.frame;
using unoidl.com.sun.star.document;
using unoidl.com.sun.star.text;
using unoidl.com.sun.star.container;
using unoidl.com.sun.star.util;
using unoidl.com.sun.star.table;
using unoidl.com.sun.star.beans;

namespace FromScratch
{
class MainClass
{
public static void Main(string[] args)
{
XComponentContext componentContext =
uno.util.Bootstrap.bootstrap();
XMultiServiceFactory multiServiceFactory = (XMultiServiceFactory)
componentContext.getServiceManager();
XTextDocument document;
XComponentLoader loader = (XComponentLoader)
multiServiceFactory.createInstance
("com.sun.star.frame.Desktop");
document = (XTextDocument) loader.loadComponentFromURL
("private:factory/swriter", "_blank", 0,
new PropertyValue[0]);

XText text = document.getText();
XTextCursor cursor = text.createTextCursor();

XTextTable table = (XTextTable)
multiServiceFactory.createInstance
("com.sun.star.text.TextTable");
table.initialize(2, 2);
text.insertTextContent(cursor, table, false);

}
}
}

它的大部分似乎工作正常,但是当它到达这一行时:

table.initialize(2, 2);

我收到一个运行时错误:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
at FromScratch.MainClass.Main (System.String[] args) [0x00063] in /home/matthew/Desktop/OpenOfficeSample/FromScratch/Main.cs:37

显然,这一行:

XTextTable table = (XTextTable)
multiServiceFactory.createInstance
("com.sun.star.text.TextTable");

实际上并没有将表设置为任何东西。

这是怎么回事?

最佳答案

解决方案(来自 OOoForum.org ):

必须从文档多服务工厂获取文本表,而不是从服务管理器的多服务工厂获取。您可以通过将文档(模型)转换为 XMultiServiceFactory 并调用其 createInstance 方法来实现。

XTextTable table = (XTextTable) 
((XMultiServiceFactory)document).createInstance
("com.sun.star.text.TextTable");

参见 DevGuide .

关于c# - 如何使用 C# 在 OpenOffice.org uno 中创建 XTextTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1583307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com