Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > выгрузка запроса в excel


Автор: dikiy 23.9.2005, 08:44
Можно ли весь запрос не пробегая каждую строку выгрузить в excel целиком как массив? чувствую, что нельзя, но всегда лучше спросить smile

Автор: ~FoX~ 23.9.2005, 09:35
Примерно так.
Код

   ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\1.xls; Extended Properties=Excel 8.0;Persist Security Info=False';
   Active := false;
   SQL.Clear;
   SQL.Add('SELECT * INTO [Лист1$] IN c:\1.xls FROM Tab1');
   Active := True;

Не проверял, может где с синтаксисом напоролся.

Автор: kulikoff 15.12.2005, 20:49
попробуй, у меня всё работало безошибочно...
Код

unit Unit1;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, DBTables, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Table1: TTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button1: TButton;
    Query1: TQuery;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var XL,Sheet: Variant;
i: integer; 
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select id,name from "D:\1.db"');
Query1.Open;
XL:= CreateOleObject('Excel.Application');
XL.WorkBooks.Add;
Sheet:= XL.ActiveWorkBook.Sheets[1];
Sheet.PageSetup.Orientation:= 2; //===Книжная ориентация===
Sheet.Name:= 'Лист № 1';
Sheet.Columns[1].ColumnWidth:= 5;
Sheet.Columns[2].ColumnWidth:= 25;
Sheet.Range[Sheet.Cells[2,1],Sheet.Cells[2,2]].HorizontalAlignment:= 3;
Sheet.Range[Sheet.Cells[2,1],Sheet.Cells[2,2]].VerticalAlignment:= 2;
Sheet.Range[Sheet.Cells[2,1],Sheet.Cells[2,2]].WrapText:= true;
Sheet.Range[Sheet.Cells[2,1],Sheet.Cells[2,2]].Font.FontStyle:= 'Полужирный';
Sheet.Range[Sheet.Cells[2,1],Sheet.Cells[2,2]].Merge(false);
Sheet.Range[Sheet.Cells[2,1],Sheet.Cells[2,2]]:= 'Результаты'; 
Sheet.Cells[3,1]:= 'Код';
Sheet.Cells[3,1]:= 'Наименование';
i:= 4;
Query1.First;
while not Query1.Eof do
begin
Sheet.Cells[i,1]:= Query1.Fields[0].AsInteger;
Sheet.Cells[i,2]:= Query1.Fields[1].AsString;
inc(i);
Query1.Next;
end;
XL.Visible:= true;
Sheet:= UnAssigned;
XL:= UnAssigned;

end;

end.

Код



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)