Я пытаюсь автоматизировать вычисление openoffice посредством автоматизации ole из приложения C#. Я открываю документ и сохраняю его снова. Код чаще всего загружается с веб-сайта Apache с небольшими изменениями.openoffice ole automation
private void OpenSave(string FileAddress)//format: "file:///C:/Untitled1.ods"
{
Type t_OOo= Type.GetTypeFromProgID("com.sun.star.ServiceManager");
Object objServiceManager= System.Activator.CreateInstance(t_OOo);
// arguments for IDispatch-call
Object[] parameters = new Object[1];
parameters[0] = "com.sun.star.frame.Desktop";
// arguments for document
Object[] args = new Object[4];
//args[0] = "private:factory/scalc";
args[0] = FileAddress;
args[1] = "_blank";
args[2] = 0;
args[3] = new Object[] { };
Object desktop;
Object doc;
try
{
desktop = (Object)t_OOo.InvokeMember("createInstance",BindingFlags.InvokeMethod, null,objServiceManager, parameters);
doc = desktop.GetType().InvokeMember("loadComponentFromUrl",BindingFlags.InvokeMethod, null, desktop, args);
if (doc == null)
{/*Error*/ }
object[] O = new object[3];
O[0] = FileAddress;
O[1] = new PropertyValue();
((PropertyValue)O[1]).Name = "";
((PropertyValue)O[1]).Value = true;
O[2] = new Object[] { };
desktop.GetType().InvokeMember("storeAsURL", BindingFlags.InvokeMethod, null, desktop,O);
}
catch (Exception e1)
{
Console.WriteLine(e1);
}
Последняя строка кода (saveTOURL) всегда выдает исключение "Неизвестное имя" (точное исключение:. [System.Runtime.InteropServices.COMException] = { "Неизвестное имя (Исключение из HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME)) "}). Может кто-нибудь помочь? Пожалуйста, обратите внимание, что я в основном открываю файлы xls с помощью этой программы.
Фактически документация о C# & OLE недостаточно богата. Вся документация находится на Java, и мне пришлось сравнивать Java с несколькими олевыми выборками, чтобы найти слабый ключ к объектной модели.
Я хочу, чтобы иметь возможность изменить значение ячейки перед сохранением, я был бы признателен, если бы вы могли мне также рассказать об этом.
В отличие от сайтов форума, мы не используем «Спасибо» или «Любая помощь приветствуется», или подписи на [так] , См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be –
Хорошо, такие люди, как я, которые редко публикуют здесь, могут через некоторое время забыть этот код поведения, потому что он не похож на обычный этикет, я постараюсь его запомнить. –
Я надеялся, что кто-нибудь поможет здесь. Является ли приемлемым, если я прямо спрашиваю человека, который ответил на подобный вопрос, чтобы взглянуть на мою проблему? –