答出来分全给你,最好要有实例!
解决方案 »
- Delphi带包编译问题
- 一个窗体中放两个panel,怎么让他们在不同的分辨率下平分窗体,有这样的控件或方法吗?
- 散分并调查
- and的优先级高于or吗?
- dbf数据表如何打开,解决给100分
- 网络编程的初级典型案例,请大家传授于我。
- 一个关于数据库的问题哦,大分派送!
- 在TMemo 控件中如何动态把一个英文单词,或者汉字变色,例如"中国程序员"动态的把"国"字变成红色,如何实现
- dll里面包含TDCOMConnection控件
- 没有月饼,只有分,请给点提示:我有几千个歌名,要发送到工作站,用户在工作站点播,我怎么处理?
- 我做的一个类似于SPY++的工具软件。大家看看哈,但愿对大家有用,参与有分。
- 一个关于outlook的问题,请高手指教
procedure CopyDbDataToExcel(Target: TDbgrid);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
//通过ole创建Excel对象
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.WorkBooks.Add[XLWBatWorksheet];
XLApp.WorkBooks[1].WorkSheets[1].Name := '测试工作薄';
Sheet := XLApp.Workbooks[1].WorkSheets['测试工作薄'];
if not Target.DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
Target.DataSource.DataSet.first; for iCount := 0 to Target.Columns.Count - 1 do
begin
Sheet.cells[1, iCount + 1] := Target.Columns.Items[iCount].Title.Caption;
end;
jCount := 1;
while not Target.DataSource.DataSet.Eof do
begin
for iCount := 0 to Target.Columns.Count - 1 do
begin
Sheet.cells[jCount + 1, iCount + 1] := Target.Columns.Items[iCount].Field.AsString;
end;
Inc(jCount);
Target.DataSource.DataSet.Next;
end;
XlApp.Visible := True;
Screen.Cursor := crDefault;
end;
procedure TMain.SaveToExcelFile(DbgridName: TDbGrid);
var
XLApp: Variant;
Sheet: Variant;
I, J: Integer;
SaveDialog:TSaveDialog;
pBookMark: TBookMark;
StrSaveFile:string;
begin
if dbgridname.DataSource.DataSet.IsEmpty then
begin
messagebox(application.Handle,'没有任何数据,不能进行保存','警告',mb_ok);
abort;
end;
SaveDialog:=TSaveDialog.Create(Nil);
SaveDialog.Filter := '*.xls';
SaveDialog.Execute;
StrSaveFile:=SaveDialog.FileName;
if length(StrSaveFile)=0 then exit;
try
screen.Cursor:=crHourGlass;
begin
try
XLApp := CreateOleObject('Excel.Application');
XLApp.WorkBooks.Add(-4167); //??????????????
XLApp.WorkBooks[1].WorkSheets[1].Name := '导出数据';
Sheet := XLApp.WorkBooks[1].WorkSheets['导出数据'];
J := 1;
except
MessageBox(GetActiveWindow,'无法调用Mircorsoft Excel! '+chr(13)+chr(10)+
'请检查是否安装了Mircorsoft Excel。','提示',MB_OK+MB_ICONINFORMATION);
Exit;
end;
with Dbgridname.DataSource.DataSet do
begin
pBookMark := GetBook;
DisableControls;
for I:=0 to dbgridname.Columns.Count-1 do
begin
if dbgridname.Columns[I].Visible=False then
Continue;
Sheet.Cells[J,I+1] := dbgridname.Columns[I].Title.Caption;
end;
Inc(J);
First;
while not Eof do begin
for I:=0 to dbgridname.Columns.Count-1 do begin
if dbgridname.Columns[I].Visible=False then
Continue;
Sheet.Cells[J,I+1] := trim(dbgridname.DataSource.DataSet.Fieldbyname(dbgridname.Columns[i].FieldName).asstring);
end;
Inc(J);
Next;
end;
GotoBook(pBookMark);
FreeBook(pBookMark);
EnableControls;
end;
XLApp.activeworkbook.saveas(StrSaveFile);
Application.ProcessMessages;
XLApp.Application.Quit;
showmessage('导出成功!');
end;
Finally
SaveDialog.Free;
screen.Cursor:=crDefault;
end;
end;