Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.12.2014, 01:17
Аватар для Homo-Fantasmus
Homo-Fantasmus Homo-Fantasmus вне форума
Прохожий
 
Регистрация: 23.08.2011
Адрес: МО
Сообщения: 46
Версия Delphi: Delphi, Lazarus
Репутация: 10
По умолчанию Работа с OpenOffice

Всем привет!
Наткнулся на статью описывающую работу с 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
Где накосячил ?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:27.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025