Помощь - Поиск - Пользователи - Календарь
Полная версия: OpenOffice через COM
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
1смен
Как подключиться через COM к ОО 2.3. И какими методами там работать? У кого-нибудь есть пример?
BabySG
Код
Перем Аргументы;  // Массив аргументов для создания приложения

СервисОО = Новый COMОбъект("com.sun.star.ServiceManager"); // Создаём доступ
Десктоп = СервисОО.createInstance("com.sun.star.frame.Desktop"); // Создаём десктоп
// Создаем документ приложения Writer
Документ = Десктоп.LoadComponentFromURL("private:factory/swriter", "_blank", 0, Аргументы);



Подробно можно почитать по этой ссылке (1,5Mb), начиная с главы Введение в OpenOffice.org API, если знаком с любым яхыком программирования - будет очень просто все.
1смен
Спасибо. А можно простой пример. Перебор строк и получение значений из нескольких колонок? Заранее благодарен.
BabySG
Я так понимаю, разговор про Calc уже? :)
Вот, примерно так можно:
Код
Листы = Документ.getSheets();
Лист = Листы.getByIndex(0);
Для Позиция = 0 По 10 Цикл
Лист.getCellByPosition(0, Позиция).value = 2;
КонецЦикла;


minute
Такой вопрос: а как получить доступ к уже открытому документу Calc?
BabySG
Т.е. подключиться к процессу?
Методологически неправильно так делать.
minute
Цитата(BabySG @ 19.3.2008, 21:41) *

Т.е. подключиться к процессу?
Методологически неправильно так делать.

Почему? В Exel'е, например, с этим вообще никаких проблем:
Код

ехель=СоздатьОбъект("Excel.Application");
//взять контрагента и поместить его в поле комментарий
Если флНестандарт=0 Тогда
Ячейка=ехель.Cells(10,2);
иначе
Ячейка=ехель.Cells(15,2);
КонецЕсли;




В ячейке будет содержаться текст открытого в данный момент документа Excel, с активного листа.
А в Open Office? sample.gif
Саша82
А как можно сделать проверку орфографии в УТ для почтовых сообщений?
Еще у меня при запуске вот такого кода:
Код
FileName= "file:///C:/Documents and Settings\Саша\Рабочий стол\1.ods";	

СервисОО = Новый COMОбъект("com.sun.star.ServiceManager");
Десктоп = СервисОО.createInstance("com.sun.star.frame.Desktop");

aua.gif Документ = Десктоп.LoadComponentFromURL(FileName, "_blank", 0, Аргументы);

Листы = Документ.getSheets();
Лист = Листы.getByIndex(0);
Для Позиция = 0 По 10 Цикл
Лист.getCellByPosition(0, Позиция).value = 2;

Вот в этом месте выдает вот такую ошибку:
{Обработка.BioЗагрузкаXML.Форма.Форма1(246)}: Ошибка при вызове метода контекста (LoadComponentFromURL): Типы не совпадают (1)
Документ = Десктоп.LoadComponentFromURL(FileName, "_blank", 0, Аргументы);

На самом деле это написано вот так: "file:///C:/Documents and Settings\Саша\Рабочий стол\1.ods"
При выделение здесь в код почему то неправильно показывает.
BabySG
Что-то не так с именем файла :)
Саша82
Ну я в общем то тоже так подумал. Ну что же тогда может быть?
Там есть что то типо функций ConvertToURL и ConvertToURL.
Еще GetPathSeparator() но я не знаю как это использовать из 1С и в обще нужно ли это?
Потом я попробовал использовать такой путь "file:///C:/1.ods" но это не помогло.
Что в обще такое private:factory/scalc?
Саша82
Как сделать Нужно сделать массив аргументов для создания приложения? Вот так не получается:

Код
СервисОО = Новый COMОбъект("com.sun.star.ServiceManager"); 
Десктоп = СервисОО.createInstance("com.sun.star.frame.Desktop");
a= СервисОО.createInstance("com.sun.star.beans.PropertyValue");
Документ=Десктоп.LoadComponentFromURL("file:///c:/1.ods","_blank",0, a);


Вот в этих: http://community.i-rs.ru/index.php/topic,9...2.html#msg59152 http://community.i-rs.ru/index.php?topic=8...w;topicseen#new
темах написано что его можно создать с помощью MSScriptControl.
Саша82
Можно этот массив создать с помощью 1С?
Может можно создать проверку орфографии с помощью самой 1С? В ней ведь есть вроде база слов?
BabySG
offtopic.gif
Я не успеваю за тобой, автор :)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.