Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function TfrmConsultas.ConnectOpenOffice: boolean;
- begin
- if VarIsEmpty(StarOffice) then
- StarOffice := CreateOleObject('com.sun.star.ServiceManager');
- Result := not (VarIsEmpty(StarOffice) or VarIsNull(StarOffice));
- end;
- procedure TfrmConsultas.DisconnectOpenOffice;
- begin
- StarOffice := Unassigned;
- end;
- procedure TfrmConsultas.ExportaOpenOffice(var Grid: TDBGrid);
- var
- vlvDocumento: Variant;
- vlvMinhaPlanilha: Variant;
- vlvMinhaPagina: Variant;
- vlvMinhaCelula: Variant;
- vliColuna01, vliColuna02: integer;
- vlBKMMarcacao: TBookMark;
- vldF: real;
- vlvV: Variant;
- StarDesktop: Variant;
- VariantArr: variant;
- begin
- ConnectOpenoffice;
- VariantArr := VarArrayCreate([0, -1], varVariant);
- if ConnectOpenOffice then
- begin
- StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop');
- vlvDocumento := StarDesktop.LoadComponentFromURL('private:factory/scalc', '_blank', 0, VariantArr);
- if vlvDocumento.SupportsService('com.sun.star.sheet.SpreadsheetDocument') then
- begin
- vlvMinhaPlanilha := vlvDocumento.getSheets;
- vlvMinhaPagina := vlvMinhaPlanilha.GetByName('Planilha1');
- for vliColuna01 := 0 to Grid.Columns.Count - 1 do
- begin
- vlvMinhaCelula := vlvMinhaPagina.getCellByPosition(vliColuna01, 0);
- vlvMinhaCelula.SetString(WideString(Grid.Columns[vliColuna01].Title.Caption));
- end;
- Grid.DataSource.DataSet.DisableControls;
- vlBKMMarcacao := Grid.DataSource.DataSet.GetBookmark;
- Grid.DataSource.DataSet.first;
- vliColuna02 := 1;
- while not Grid.DataSource.DataSet.EOF do
- begin
- for vliColuna01 := 0 to Grid.Columns.Count - 1 do
- begin
- vlvMinhaCelula := vlvMinhaPagina.getCellByPosition(vliColuna01, vliColuna02);
- try
- vlvV := Grid.DataSource.DataSet.Fieldbyname(TColumn(Grid.Columns[vliColuna01]).Fieldname).Value;
- vldF := Grid.DataSource.DataSet.Fieldbyname(TColumn(Grid.Columns[vliColuna01]).Fieldname).Value;
- if vlvV = vldF then
- begin
- vlvMinhaCelula.SetValue(vlvV);
- end;
- except
- vlvMinhaCelula.SetString(WideString(Grid.DataSource.DataSet.Fieldbyname(TColumn(Grid.Columns[vliColuna01]).Fieldname).AsString));
- end;
- end;
- Grid.DataSource.DataSet.Next;
- inc(vliColuna02);
- end;
- vlvMinhaPagina.getColumns.OptimalWidth := True;
- Grid.DataSource.DataSet.GotoBookmark(vlBKMMarcacao);
- Grid.DataSource.DataSet.FreeBookmark(vlBKMMarcacao);
- Grid.DataSource.DataSet.EnableControls;
- end
- else
- begin
- MessageDlg('O tipo de arquivo criado esta diferente do que foi solicitado, favor verificar.', mtError, [mbOK], 0);
- end;
- MessageDlg('Planilha gerada com sucesso!', mtInformation, [mbOK], 0);
- DisconnectOpenOffice;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement