Работа с OpenOffice через Com

1. VigerV 20.06.12 11:44 Сейчас в теме
Проблема: есть документ в нем табличный документ, установлен только OpenOffice. При этом цель сохранить документ в doc формате. Возникло две проблемы первая, при построчном чтении текст переносится без форматирования(можно ли как-то альтернативно сделать перенос текста), и вторая не происходит сохранения вылетает при установке фильтра для сохранения в формате MS Word. Может кто подскажет как решить:

 scr=Новый COMОбъект("MSScriptControl.ScriptControl");
    scr.language="javascript";
    scr.eval("Massiv=new Array()");
    Massiv=scr.eval("Massiv"); //создали массив на ява
 
    ServiceManager=Новый COMОбъект("com.sun.star.ServiceManager");
    Scr.AddObject("ServiceManager",ServiceManager);
    Desktop=ServiceManager.createInstance("com.sun.star.frame.Desktop"); //сом объект
 
    
    Попытка
        Document=Desktop.LoadComponentFromURL("private:factory/swriter","_blank",0, Massiv ); //новый документ
 
    Исключение
        Сообщить("Ошибка создания нового документа");
    КонецПопытки;
    
    Для НомерСтроки = 1 По ПечатнаяФорма.ВысотаТаблицы Цикл
            //установка позиции в конец документа
 
            Xrange = Document.getText().getEnd();
            // вставка строки
 
            Document.getText().insertString(Xrange, ПечатнаяФорма.ПолучитьОбласть(НомерСтроки, 1, НомерСтроки, ПечатнаяФорма.ШиринаТаблицы).ТекущаяОбласть.Текст, false);    
    КонецЦикла;
    
        
    
    ИмяФайлаСообщения = Путь + ИмяФайла +"."+ТипФайла;
    Попытка
         SaveParam        = scr.Eval("ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
         SaveParam.Name    = "FilterName";
         SaveParam.Value    = "Ms Word 97";
         scr.CodeObject.SetItem(0, SaveParam);
         Document.storeToURL(ПреобразоватьВURL(ИмяФайлаСообщения), Massiv);
         Document.dispose();
         Сообщить("Файл " + ИмяФайлаСообщения + " успешно сохранен");
          
    Исключение
           Сообщить("Ошибка сохранения документа");
           Сообщить(ОписаниеОшибки());
          
       КонецПопытки;
Показать


альтернатинвый способ наложения фильтра для формата тоже не работает:

     scr.eval("Massiv[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
        scr.eval("Massiv[0].Name='FilterName'");
        scr.eval("Massiv[0].Value='Ms Word 97'");
        Document.storeToURL(ПреобразоватьВURL(ИмяФайлаСообщения), Massiv);
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. red80 21.06.12 13:23 Сейчас в теме
(1) VigerV,
При этом цель сохранить документ в doc формате.

Может в БСП глянуть? Там есть общий модуль с процедурами для работы с OOWriter
2. VigerV 21.06.12 10:32 Сейчас в теме
При использовании второго метода наложения фильтра вылетает ошибка:
Ошибка при вызове метода контекста (storeToURL): Произошла исключительная ситуация ([automation bridge] ): com.sun.star.task.ErrorCodeIOException:

scr.eval("Massiv[0]=ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
        scr.eval("Massiv[0].Name='FilterName'");
        scr.eval("Massiv[0].Value='Ms Word 97'");
        Document.storeToURL(ПреобразоватьВURL(ИмяФайлаСообщения), Massiv);
4. badaboomrus 06.02.14 17:34 Сейчас в теме
Используй вместо storeToURL storeAsURL
P.S. Мне помогло.
5. belarus767 26.05.22 00:34 Сейчас в теме
Создал новый документ из OpenOffice, проставил заново области, ошибка ушла :) Видимо содержимое документа не в том формате сохранилось...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот