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):
Использование COM Automation для работы с OpenOffice и Microsoft Office
Автоматизация COM существует только в Windows, поэтому следующие два примера не будут работать в OS X и-или Linux. Для этих платформ см. Making do without Windows COM Automation. Если вам нужно только создать и-или просмотреть текстовый документ из вашей программы, то обратите внимание на XDev Toolkit.
Вот простой пример того, как открыть документ из программы с помощью сервера автоматизации OpenOffice. Не забываем, что это работает только в Windows.
program TestOO;{$IFDEF FPC}
{$MODE Delphi}
{$ELSE}
{$APPTYPE CONSOLE}
{$ENDIF}uses
SysUtils, Variants, ComObj;const
ServerName = 'com.sun.star.ServiceManager';
var
Server : Variant;
Desktop : Variant;
LoadParams : Variant;
Document : Variant;
TextCursor : Variant;
begin
if Assigned(InitProc) then
TProcedure(InitProc);try
Server := CreateOleObject(ServerName);
except
WriteLn('Unable to start OO.');
Exit;
end;Desktop := Server.CreateInstance('com.sun.star.frame.Desktop');LoadParams := VarArrayCreate([0, -1], varVariant);{Create new document}Document := Desktop.LoadComponentFromURL('private:factory/swriter',
'_blank', 0, LoadParams);TextCursor := Document.Text.CreateTextCursor;{Insert existing document} //Substitute your path and docTextCursor.InsertDocumentFromURL('file:///C|/my/path/mydoc.doc',
LoadParams);end.Вот простой пример того, как открыть документ из программы с помощью сервера автоматизации Word. Не забываем, что это работает только в Windows, и в настоящее время не может быть скомпилировано в Free Pascal 2.2, только в Delphi. Пожалуйста, проверьте эту информацию позже или протестируйте на болеее актуальной версии FPC.
program TestMsOffice;{$IFDEF FPC}
{$MODE Delphi}
{$ELSE}
{$APPTYPE CONSOLE}
{$ENDIF}uses
SysUtils, Variants, ComObj;const
ServerName = 'Word.Application';
var
Server : Variant;
begin
if Assigned(InitProc) then
TProcedure(InitProc);try
Server := CreateOleObject(ServerName);
except
WriteLn('Unable to start Word.');
Exit;
end;{Open existing document} //Substitute your path and docServer.Documents.Open('c:\my\path\mydoc.doc');Server.Visible := True; {Make Word visible}end.Использование библиотеки Free Pascal Spreadsheet
Еще один способ автоматизировать повседневную работу с электронными таблицами заключается в создании файла с помощью библиотеки FPSpreadsheet. Этот метод не требует наличия в системе какого-либо установленного стороннего (офисного) приложения и при этом поддерживает сразу несколько различных форматов.
Запись в файл Excel используя ADO
Пожалуйста, напишите мне.
Дополнительные ссылки
- Описание форматов файлов Excel на сайте OpenOffice
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.