Копия викизеркало

Это зеркало вики с pascal.chat. Правка, история и вход — там.

Office Automation/ru

Deutsch · English · Español · Français · Italiano · Русский · 中文(中国)

(Windows only)

Возможность взаимодействовать с офисным программным обеспечением и создание электронных таблиц, текстовых документов и презентаций из кода может быть очень полезным в офисе, и выиграть много времени, для тех, кто может это сделать. Одним из таких примеров является создание приложений, которые могут читать файлы в произвольном формате и сохранять их в Excel. Такую задачу гораздо более эффективно решить программно, нежели вручную.

Использование OpenOffice UNO Bridge

OpenOffice имеет надстройки для использования в C++ и Java а в Windows также может использоваться автоматизация COM (см. ниже). По состоянию проекта Free Pascal на данный момент времени (ноябрь 2010) достаточно сложно использовать UNO (Universal Network Objects) в среде Object Pascal для OS X и Linux. Если Вы заинтересованны в разработке OO "bridge" для Pascal, пожалуйста следуйте по следующим ссылкам (внимание: these links are quite techie in true Sun fashion):

api.openoffice.org

About_Bridges

Использование COM Automation для работы с OpenOffice и Microsoft Office

Автоматизация COM существует только в Windows, поэтому следующие два примера не будут работать в OS X и-или Linux. Для этих платформ см. Making do without Windows COM Automation. Если вам нужно только создать и-или просмотреть текстовый документ из вашей программы, то обратите внимание на XDev Toolkit.

Вот простой пример того, как открыть документ из программы с помощью сервера автоматизации OpenOffice. Не забываем, что это работает только в Windows.

pascal
program TestOO;
pascal
{$IFDEF FPC}
 {$MODE Delphi}
{$ELSE}
 {$APPTYPE CONSOLE}
{$ENDIF}
pascal
uses
  SysUtils, Variants, ComObj;
pascal
const
  ServerName = 'com.sun.star.ServiceManager';
var          
  Server     : Variant;
  Desktop    : Variant;
  LoadParams : Variant;
  Document   : Variant;
  TextCursor : Variant;
begin
  if Assigned(InitProc) then
    TProcedure(InitProc);
pascal
try
  Server := CreateOleObject(ServerName);
except
  WriteLn('Unable to start OO.');
  Exit;
end;
pascal
Desktop := Server.CreateInstance('com.sun.star.frame.Desktop');
pascal
LoadParams := VarArrayCreate([0, -1], varVariant);
pascal
{Create new document}
pascal
Document := Desktop.LoadComponentFromURL('private:factory/swriter',
                                         '_blank', 0, LoadParams);
pascal
TextCursor := Document.Text.CreateTextCursor;
pascal
{Insert existing document}  //Substitute your path and doc
pascal
TextCursor.InsertDocumentFromURL('file:///C|/my/path/mydoc.doc',  
                                 LoadParams);
pascal
end.

Вот простой пример того, как открыть документ из программы с помощью сервера автоматизации Word. Не забываем, что это работает только в Windows, и в настоящее время не может быть скомпилировано в Free Pascal 2.2, только в Delphi. Пожалуйста, проверьте эту информацию позже или протестируйте на болеее актуальной версии FPC.

pascal
program TestMsOffice;
pascal
{$IFDEF FPC}
 {$MODE Delphi}
{$ELSE}
 {$APPTYPE CONSOLE}
{$ENDIF}
pascal
uses
  SysUtils, Variants, ComObj;
pascal
const
  ServerName = 'Word.Application';
var
  Server     : Variant;
begin
  if Assigned(InitProc) then
    TProcedure(InitProc);
pascal
try
  Server := CreateOleObject(ServerName);
except
  WriteLn('Unable to start Word.');
  Exit;
end;
pascal
{Open existing document}  //Substitute your path and doc
pascal
Server.Documents.Open('c:\my\path\mydoc.doc');
pascal
Server.Visible := True;  {Make Word visible}
pascal
end.

Использование библиотеки Free Pascal Spreadsheet

Еще один способ автоматизировать повседневную работу с электронными таблицами заключается в создании файла с помощью библиотеки FPSpreadsheet. Этот метод не требует наличия в системе какого-либо установленного стороннего (офисного) приложения и при этом поддерживает сразу несколько различных форматов.

Запись в файл Excel используя ADO

Пожалуйста, напишите мне.

Дополнительные ссылки


From the Free Pascal wiki, page "Office Automation/ru", as it stood on 2016-12-02 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Версия 1, последнее изменение: WikiArchive, .