Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2015, 14:23   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию Замена MS Word на OOo, Libre

Здравствуйте

Собственно организация массово-внезапно отказалась от MS Office. Офис отвалился. Поставил себе OpenOffice. документы ворда криво отображаются в Writer'е, но на этом беды не заканчивается.

У меня есть некий RTF-шаблон, который надо клонировать, а клон заполнить через OLE-сервер. Раньше использовал Word.Application:
Код:
  word = createoleobject('word.application')
  word. ... 
  понеслось....
Теперь без ворда как быть? Есть кто, переживший такую миграцию?

Последний раз редактировалось Человек_Борща; 16.11.2015 в 14:26.
Человек_Борща вне форума Ответить с цитированием
Старый 16.11.2015, 14:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Вот так:
Код:
 
TAlisaOfficeLibre=record
   StarOffice, StarDesktop, Document, Sheets, Sheet, Cell, OpenParam: variant;
end;
Libre:TAlisaOfficeLibre;
...
function TAlisaOffice.OpenLibre: Boolean;
begin
 Result:=true;
 with Libre do begin
   StarOffice:=Unassigned;
   Document:=Unassigned;
   Sheets:=Unassigned;
 end;
 
 try
   Libre.StarOffice := CreateOleObject('com.sun.star.ServiceManager');
 except
   on E:Exception do begin
     Result:=false;
     Error:='Error on trying CreateOleObject "com.sun.star.ServiceManager": '+e.Message;
     exit;
   end;
 end;

 if VarIsClear(Libre.StarOffice) then  begin
  Error:='Error: Libre object not created. ';
  Result:=false;
  exit;
 end;

 try
   Libre.StarDesktop := Libre.StarOffice.createInstance('com.sun.star.frame.Desktop');
 except
   on E:Exception do begin
     Error:='Error on trying createInstance "com.sun.star.frame.Desktop": '+e.Message;
     Result:=false;
     exit;
   end;
 end;

 if VarIsClear(Libre.StarDesktop) then  begin
  Error:='Error: Libre StarDesktop not created. ';
  Result:=false;
  exit;
 end;


end;

function TAlisaOffice.OpenFile(FileName: AnsiString): Boolean;
var lop:Variant; fn:olevariant;
begin
  if not VarIsClear(Libre.StarDesktop) then begin
   try
     fn:='file:///'+StringReplace(FileName,'\','/',[rfReplaceAll]);

    Libre.Document := Libre.StarDesktop.LoadComponentFromURL(
                     fn, '_blank', 0,
                     lop);
     if not VarIsClear(Libre.Document) then begin
          Libre.Sheets := Libre.Document.getSheets;
     end else begin
      Error:='Sheets not taked';
      exit;
     end;

   except
     on E:Exception do begin
       Error:='Error on trying load file "'+FileName+'": '+e.Message;
       Result:=false;
       exit;
     end;
   end;
  end else begin
   Error:='Error: Cannot load file "'+FileName+'". Libre object not created. ';
   Result:=false;
  end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Libre Office. com.sun.star.script. Как скормить оффису скрипт? Stilet Win Api 9 27.08.2015 08:56
Замена в Word'e из Excel'я nikol_ Microsoft Office Excel 2 07.10.2011 12:40
Замена текста в Word Mermaid Помощь студентам 0 10.05.2011 16:50
замена слов в MS Word polov Общие вопросы Delphi 4 09.10.2009 18:29
Word. автоматическая замена значений belikk Microsoft Office Word 8 07.03.2009 11:03