SOS!!!(100分相赠)小菜鸟请教各位大虾:SQL数据库倒入EXCEL的问题。(100分)

  • 主题发起人 主题发起人 李维宏
  • 开始时间 开始时间

李维宏

Unregistered / Unconfirmed
GUEST, unregistred user!
现有SQL数据库,数据类型如下int、varchar、datetime、text,要求设计程序将其内容
自动倒入Excel表格中,要求五一前完成!救救我!!
 
将数据库中的数据导出成*.xls
用到
ADOQuery1: TADOQuery;
SaveDialog1: TSaveDialog;
ExcelApplication1: TExcelApplication;
ExcelWorkbook1: TExcelWorkbook;
ExcelWorksheet1: TExcelWorksheet;
procedure TForm1.Button1Click(Sender: TObject);
var
i,row:integer;
begin
if SaveDialog1.Execute then
begin
Screen.Cursor:=crHourGlass;
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet);
if not adoQuery1.Active then
begin
adoQuery1.Open;
end;
for i:=0 to adoQuery1.Fields.Count-1 do
ExcelWOrkSheet1.Cells.Item[1,i+1]:=adoQuery1.Fields.FieldName;
row:=2;
while not adoQuery1.Eof do
begin
for i:=0 to adoQuery1.Fields.Count-1 do
begin
ExcelWOrkSheet1.Cells.Item[row,i+1]:=adoQuery1.Fields.AsString;
end;
row:=row+1;
adoQuery1.Next;
end;
ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName);
ExcelWOrkBook1.Close(false);
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
Screen.Cursor:=crDefault;
Application.MessageBox('Export successfully!','Information',0);
end;
end;
 
我有一个函数可以生成excel,并且不一定要求机器上装了excel
要得话,mail:liulian@citiz.net
 
to:terry_lzs
小菜鸟继续请教:能不能讲一下更详细的做法,比方说再窗体上加什么控件,
属性如何设置?谢谢!
 
我在前面的回答里不是有写了吗?!
ado页上的adoquery
dialog页上的SaveDialog
server页上的
TExcelApplication;
TExcelWorkbook;
TExcelWorksheet;
然后放一个按钮,在点击事件中添加上面的代码,不过先要将adoquery与数据库中要导出
的数据相连接
 
谢谢大虾terry_lzs,小女子这厢有礼了!!!
:)
诸位大虾请注意,本问题截止到今晚18:00,还有要分得快来呀!
 
procedure Tfrm_Main.BitBtn4Click(Sender: TObject);
var excelcaption:string;
begin
if (CYear.Text<>'') and (CMonth.Text<>'') and (CDay.Text<>'') then
begin
DataModule1.AQ_Total.First;
BitBtn2.Enabled:=True;
BitBtn4.Enabled:=True;
excelcaption:=CYear.Text + '年' + CMonth.Text + '月' + CDay.Text + '日——' + CYear2.Text + '年' + CMonth2.Text + '月' + CDay2.Text + '日';
frmToExcel :=TfrmToExcel.Create(Self);
frmToExcel.SaveToExcel('结算汇总' + '(' + excelcaption +')',DBGrid1);
frmToExcel.ShowModal;
frmToExcel.Free;
end
else
begin
Showmessage('结算汇总的起始日期或者结束日期输入有误!');
BitBtn2.Enabled:=False;
BitBtn4.Enabled:=False;
end;
end;

--------------------------------
procedure TfrmToExcel.SaveToExcel(T1: String; DBG: TDBGrid);
var
XLApp:Variant;
DS:TDataset;
Const
xlWBATWorksheet = -4167;
var
i,j,ii: Integer;
Sheet,jj: Variant;
begin
Screen.Cursor := crHourGlass;
DS := DBG.DataSource.Dataset;

XLApp := CreateOleObject('Excel.Application');
XLApp.Visible := True;
XLApp.Workbooks.Add(xlWBatWorkSheet);
XLApp.Workbooks[1].WorkSheets[1].Name := T1;
Sheet:=XLAPP.Workbooks[1].WorkSheets[T1];
ii:=DS.FieldCount-3;
for i:=0 to ii-1 do
begin
jj:=DBG.Columns.Items.Title.Caption;
Sheet.Cells[3, i+1] := jj;
end;
i:=4;
While not DS.Eof do
begin
Sheet.Cells[i,1]:=i-2;
for j:=0 to DS.FieldCount-4 do
begin
jj:=DS.Fields[j].Value ;
Sheet.Cells[i, j+1] := jj;
end;
DS.next;
i:=i+1;
end;
LblMsg.Caption :='保存完毕!';
LblMsg.Refresh ;
if not BitBtn3.Enabled then
BitBtn3.Enabled :=true;
Screen.Cursor := crDefault;
end;
 
怎么都扮成女的阿??
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
941
SUNSTONE的Delphi笔记
S
后退
顶部