![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Всем привет!
Наткнулся на статью описывающую работу с OpenOffice ... Вот ссылочка - http://edusupport.ru/?statya=113 Решил поковырять эту тему, имеется прожка в которой реализована передача данных из таблицы БД в EXCEL по нажатию кнопки. Решил расширить функционал и добавить ещё одну кнопку реализующую экспорт в электронную таблицу OpenOffice. И буквально на первых шагах столкнулся с проблемой на этапе создания документа при попытке его запустить вылетает ошибка Invalid variant operation. Вот код: Код:
unit Unit6; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, ExtCtrls, DBCtrls, DB, DBGrids, DBTables, ADODB, Vcl.Buttons, Vcl.OleCtnrs, ComObj, ActiveX; type TOpenOffice = class function Connect: boolean; function MakePropertyValue(PropertyName, PropertyValue:string):variant; function CreateDocument: boolean; end; type TForm6 = class(TForm) DBGrid1: TDBGrid; DataSource1: TDataSource; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn4: TBitBtn; BitBtn5: TBitBtn; BitBtn6: TBitBtn; BitBtn7: TBitBtn; BitBtn8: TBitBtn; BitBtn9: TBitBtn; BitBtn10: TBitBtn; BitBtn11: TBitBtn; BitBtn13: TBitBtn; Button1: TButton; procedure FormCreate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure BitBtn5Click(Sender: TObject); procedure BitBtn6Click(Sender: TObject); procedure BitBtn7Click(Sender: TObject); procedure BitBtn8Click(Sender: TObject); procedure BitBtn9Click(Sender: TObject); procedure DBGrid1DblClick(Sender: TObject); procedure DBGrid1CellClick(Column: TColumn); procedure BitBtn11Click(Sender: TObject); procedure BitBtn10Click(Sender: TObject); procedure BitBtn13Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form6: TForm6; i:integer; i1,j,index: Integer; ExcelApp,sheet: Variant; OO: Variant; Sheets, Cell : Variant; Desktop: Variant; Document: Variant; implementation {$R *.dfm} //Подключамся к серверу автоматизации function TOpenOffice.Connect: boolean; begin if VarIsEmpty(OO) then OO := CreateOleObject('com.sun.star.ServiceManager'); Result := not (VarIsEmpty(OO) or VarIsNull(OO)); end; //Создаём документ function TOpenOffice.CreateDocument: boolean; begin Desktop := OO.createInstance('com.sun.star.frame.Desktop'); Document := Desktop.LoadComponentFromURL('private:factory/scalc', '_blank', 0,VarArrayCreate([0, -1], varVariant)); Result := not (VarIsEmpty(Document) or VarIsNull(Document)); Sheets := Document.GetSheets; //Добавляем Книгу с именем Export Sheet := Sheets.getByName('Export'); //Делаем документ не видимым OO.Visible := false; end; //Функция эта вспомогательная, она просто ставить заданное значение в соответствие заданному свойству. function TOpenOffice.MakePropertyValue(PropertyName, PropertyValue:string):variant; var Structure: variant; begin Structure := OO.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); Structure.Name := PropertyName; Structure.Value := PropertyValue; Result := Structure; end; procedure TForm6.Button1Click(Sender: TObject); begin OO.Visible := true; end; вылетает ошибка Invalid variant operation Где накосячил ? |