Sign in Join
Wiki copytemporary

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.

Revision 1, last changed by WikiArchive .

Edited on wiki.freepascal.org by 6 people, 2008–2016

From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.

WhenWhoWhat changed
ViruZNew page: == Использование OpenOffice UNO Bridge == OpenOffice has language bindings for C++ and Java and on Windows can also be manipulated via COM Automation (see below), but there is...
ViruZUsing COM Automation to interact with OpenOffice and Microsoft Office
ViruZUsing the Free Pascal Spreasheet Library
ViruZИспользование OpenOffice UNO Bridge
ViruZИспользование OpenOffice UNO Bridge
Junior
4ymaИспользование COM Automation для работы с OpenOffice и Microsoft Office
4ymaИспользование библиотеки Free Pascal Spreadsheet
4yma
4yma
VadimИспользование библиотеки Free Pascal Spreadsheet
VadimИспользование библиотеки Free Pascal Spreadsheet
VadimWriting an Excel file using ADO
VadimExternal links
SynergyИспользование OpenOffice UNO Bridge (minor)
SynergyИспользование OpenOffice UNO Bridge (minor)
SynergyИспользование COM Automation для работы с OpenOffice и Microsoft Office
FTurtle+ categories (minor)
FTurtleAdded Template:Platform only

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.