怎样显示或保存成Excel????????? 怎样实现将DBGrid中显示的数据,显示或保存成Excel的格式?那位大虾能给点意见,有没有这方面的书或网站都行》》》 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 正好我在前面搜索这个论坛的时候搜到的,现在我已经放进我的博科里面了,你去看吧:http://pinyu.blogchina.com/blog/article_50413.205828.html 从dbgrid的数据集导出给你个demo,建立odbc为qq,导出sqlserver2000northwind数据库中的orders表数据,测试通过----------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, ExcelXP, OleServer;type TForm1 = class(TForm) Button1: TButton; ExcelApp: TExcelApplication; ExcelQueryTable: TExcelQueryTable; ExcelBook: TExcelWorkbook; procedure Button1Click(Sender: TObject); private { Private declarations } function ToExcelFile(var Filename,SheetName,WIndowCaption:OleVariant;SqlStr:String):Boolean; public { Public declarations } end;var Form1: TForm1;implementation uses ComObj;{$R *.dfm}function TForm1.ToExcelFile(var Filename,SheetName,WindowCaption:OleVariant;SqlStr:String):Boolean;varNewTemplate,ItemIndex:olevariant;CurSheet:_WorkSheet;connectStr:olevariant;beginNewTemplate:=emptyParam;trytryExcelApp.Connect;exceptMessageDlg('您可能没有安装EXCEL', mtError, [mbOk], 0);Abort;end;ExcelApp.visible[0]:=TRUE;ExcelApp.Caption:=WindowCaption;ExcelApp.Workbooks.Add(Newtemplate,0);ExcelBook.ConnectTo(ExcelApp.workBooks.Item[1]);ExcelBook.Title[0]:=WIndowCaption;ExcelBook.Activate;CurSheet:=ExcelBook.Sheets[1] as _worksheet;CurSheet.Name:=SheetName;connectstr := 'ODBC;DSN=qq;';CurSheet.QueryTables.Add(connectstr,CurSheet.range['a3','e3'],SqlStr);ExcelQueryTable.ConnectTo(CurSheet.QueryTables.Item(1));ExcelQueryTable.Refresh;excepton E: Exception dobeginItemIndex:=FALSE;ExcelBook.Close(ItemIndex);ExcelApp.Disconnect;ExcelApp.Quit;Application.MessageBox('数据输出到EXCEL过程出错,请检查EXCEL版本是否一致','警告',mb_ok);exit;end;end;ExcelQueryTable.Disconnect;ExcelBook.Disconnect;ExcelApp.Disconnect;Result:=TRUE;end;procedure TForm1.Button1Click(Sender: TObject);var XlsApp,XlsSheet,WndCaption:OleVariant;begin XlsApp:=OleVariant('c:\aa.xls'); XlsSheet:=OleVariant('a'); WndCaption:=OleVariant('test'); ToExcelFile(XlsApp,XlsSheet,WndCaption,'select * from orders');end;end.---------------------ExcelApp.visible[0]:=false;就可以不打开excle窗口加入ExcelApp.Save(XlsApp);自动保存 procedure Tfrmptax.Button3Click(Sender: TObject); var ExcelApp,WorkBook:OLEVariant; i,j :integer; xlsFileName:string; recycle_length:integer; s_date:string; begin s_date:=edit2.Text; savedialog2.Execute; xlsFileName:=savedialog2.FileName ; if xlsfilename='' then begin showmessage('操作成功取消!'); end else begin if edit2.text=''then begin with query4 do begin CommUtils.initialQuery(Query4,'select count(T_id),sum(T_taxable),sum(T_amountax) from tax'); open; recycle_length:=query4.Fields[0].AsInteger ; end; progressbar1.Max := recycle_length; progressbar1.position:=0; try ExcelApp:= CreateOleObject( 'Excel.Application' ); WorkBook:=CreateOleobject('Excel.Sheet'); except application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',mb_OK+mb_IconStop); Exit; end; //workBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)+'excel.xls'); WorkBook:=ExcelApp.workbooks.Add; ExcelApp.Cells(1,1):='条数'; ExcelApp.Cells(1,2):='工号'; ExcelApp.Cells(1,3):='姓名'; ExcelApp.Cells(1,4):='人民币合计'; ExcelApp.Cells(1,5):='减除费用额'; ExcelApp.Cells(1,6):='应纳税所得税'; ExcelApp.Cells(1,7):='税率'; ExcelApp.Cells(1,8):='速算扣除数'; ExcelApp.Cells(1,9):='扣缴所得税额'; j:=1; //. CommUtils.initialTable(table3,TBLNAME_TAX+'.dbf'); //. table3.Open; table3.First; for i:=2 to recycle_length+1 do begin ExcelApp.Cells(i,1):=j; ExcelApp.Cells(i,2):=table3.fieldbyname('T_id').Asstring; ExcelApp.Cells(i,3):=table3.fieldbyname('T_name').Asstring; ExcelApp.Cells(i,4):=table3.fieldbyname('T_total').Asfloat; ExcelApp.Cells(i,5):=table3.fieldbyname('T_deduct').Asfloat; ExcelApp.Cells(i,6):=table3.fieldbyname('T_taxable').Asstring; ExcelApp.Cells(i,7):=FloatToStr(table3.fieldbyname('T_taxrate').asFloat*100)+'%'; ExcelApp.Cells(i,8):=table3.fieldbyname('T_quick').Asfloat; ExcelApp.Cells(i,9):=table3.fieldbyname('T_amountax').Asfloat; j:=j+1; table3.next; progressbar1.position:=progressbar1.position+1; progressbar1.refresh ; end; ExcelApp.Cells(recycle_length+2,1):='合计'; ExcelApp.Cells(recycle_length+2,6):=query4.Fields[1].Asfloat; ExcelApp.Cells(recycle_length+2,9):=query4.Fields[2].Asfloat; WorkBook.SaveAS(xlsFileName); WorkBook.close; ShowMessage('导入Excel成功!'); end else begin with query4 do begin CommUtils.initialQuery(Query4,'select count(T_id),sum(T_taxable),sum(T_amountax) from tax' +' where T_date = '+ #39+s_date+#39); open; recycle_length:=query4.Fields[0].AsInteger ; end; with query5 do begin CommUtils.initialQuery(Query5,'select T_id,T_name,T_total,T_deduct,T_taxrate,T_quick, T_taxable,T_amountax from tax ' +'where T_date ='+ #39+s_date+#39+'order by T_id'); open; end; progressbar1.Max := recycle_length; progressbar1.position:=0; try ExcelApp:= CreateOleObject( 'Excel.Application' ); WorkBook:=CreateOleobject('Excel.Sheet'); except application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',mb_OK+mb_IconStop); Exit; end; //workBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)+'excel.xls'); WorkBook:=ExcelApp.workbooks.Add; ExcelApp.Cells(1,1):='条数'; ExcelApp.Cells(1,2):='工号'; ExcelApp.Cells(1,3):='姓名'; ExcelApp.Cells(1,4):='人民币合计'; ExcelApp.Cells(1,5):='减除费用额'; ExcelApp.Cells(1,6):='应纳税所得税'; ExcelApp.Cells(1,7):='税率'; ExcelApp.Cells(1,8):='速算扣除数'; ExcelApp.Cells(1,9):='扣缴所得税额'; j:=1; CommUtils.initialTable(table3,TBLNAME_TAX+'.dbf'); table3.Open; table3.First; for i:=2 to recycle_length+1 do begin ExcelApp.Cells(i,1):=j; ExcelApp.Cells(i,2):=Query5.fieldbyname('T_id').Asstring; ExcelApp.Cells(i,3):=Query5.fieldbyname('T_name').Asstring; ExcelApp.Cells(i,4):=Query5.fieldbyname('T_total').Asfloat; ExcelApp.Cells(i,5):=Query5.fieldbyname('T_deduct').Asfloat; ExcelApp.Cells(i,6):=Query5.fieldbyname('T_taxable').Asstring; ExcelApp.Cells(i,7):=FloatToStr(Query5.fieldbyname('T_taxrate').asFloat*100)+'%'; ExcelApp.Cells(i,8):=Query5.fieldbyname('T_quick').Asfloat; ExcelApp.Cells(i,9):=Query5.fieldbyname('T_amountax').Asfloat; j:=j+1; query5.next; progressbar1.position:=progressbar1.position+1; progressbar1.refresh ; end; ExcelApp.Cells(recycle_length+2,1):='合计'; ExcelApp.Cells(recycle_length+2,6):=query4.Fields[1].Asfloat; ExcelApp.Cells(recycle_length+2,9):=query4.Fields[2].Asfloat; WorkBook.SaveAS(xlsFileName); WorkBook.close; ShowMessage('导入Excel成功!'); end; end;end; 求一个控件,点击新增按钮,表格中新增一行,左边还带有编号1、2、3、4、5 未说明的标识符:'application' 让我困惑的一个问题! 明日交东西.急死我了.帮我呀. 修改数据 问题!有份! 如何实现界面和数据库的独立,是不是将业务规则在Datamodule中实现就可以了 我想把所有正在运行的程序都关掉,不知如何作啊,2:00结帖,快来啊 ACM的例子如何在语音播放同时将声音存储到一个文件中 请问ListView1如何读取ini文件内容? 有install shield for DELPHI5.0的吗??? 怎样显示或保存成Excel????????? dbe事務回滾
http://pinyu.blogchina.com/blog/article_50413.205828.html
----------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, ExcelXP, OleServer;type
TForm1 = class(TForm)
Button1: TButton;
ExcelApp: TExcelApplication;
ExcelQueryTable: TExcelQueryTable;
ExcelBook: TExcelWorkbook;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function ToExcelFile(var Filename,SheetName,WIndowCaption:OleVariant;SqlStr:String):Boolean;
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses ComObj;
{$R *.dfm}function TForm1.ToExcelFile(var Filename,SheetName,WindowCaption:OleVariant;SqlStr:String):Boolean;
var
NewTemplate,ItemIndex:olevariant;
CurSheet:_WorkSheet;
connectStr:olevariant;
begin
NewTemplate:=emptyParam;
try
try
ExcelApp.Connect;
except
MessageDlg('您可能没有安装EXCEL', mtError, [mbOk], 0);
Abort;
end;
ExcelApp.visible[0]:=TRUE;
ExcelApp.Caption:=WindowCaption;
ExcelApp.Workbooks.Add(Newtemplate,0);
ExcelBook.ConnectTo(ExcelApp.workBooks.Item[1]);
ExcelBook.Title[0]:=WIndowCaption;
ExcelBook.Activate;
CurSheet:=ExcelBook.Sheets[1] as _worksheet;
CurSheet.Name:=SheetName;
connectstr := 'ODBC;DSN=qq;';
CurSheet.QueryTables.Add(connectstr,CurSheet.range['a3','e3'],SqlStr);
ExcelQueryTable.ConnectTo(CurSheet.QueryTables.Item(1));
ExcelQueryTable.Refresh;
except
on E: Exception do
begin
ItemIndex:=FALSE;
ExcelBook.Close(ItemIndex);
ExcelApp.Disconnect;
ExcelApp.Quit;
Application.MessageBox('数据输出到EXCEL过程出错,请检查EXCEL版本是否一致','警告',mb_ok);
exit;
end;
end;
ExcelQueryTable.Disconnect;
ExcelBook.Disconnect;
ExcelApp.Disconnect;
Result:=TRUE;
end;
procedure TForm1.Button1Click(Sender: TObject);
var XlsApp,XlsSheet,WndCaption:OleVariant;
begin
XlsApp:=OleVariant('c:\aa.xls');
XlsSheet:=OleVariant('a');
WndCaption:=OleVariant('test');
ToExcelFile(XlsApp,XlsSheet,WndCaption,'select * from orders');end;end.---------------------ExcelApp.visible[0]:=false;就可以不打开excle窗口
加入ExcelApp.Save(XlsApp);自动保存
procedure Tfrmptax.Button3Click(Sender: TObject);
var ExcelApp,WorkBook:OLEVariant;
i,j :integer;
xlsFileName:string;
recycle_length:integer;
s_date:string; begin
s_date:=edit2.Text;
savedialog2.Execute;
xlsFileName:=savedialog2.FileName ;
if xlsfilename='' then
begin
showmessage('操作成功取消!');
end
else
begin
if edit2.text=''then
begin with query4 do
begin
CommUtils.initialQuery(Query4,'select count(T_id),sum(T_taxable),sum(T_amountax) from tax');
open;
recycle_length:=query4.Fields[0].AsInteger ; end; progressbar1.Max := recycle_length;
progressbar1.position:=0;
try
ExcelApp:= CreateOleObject( 'Excel.Application' );
WorkBook:=CreateOleobject('Excel.Sheet');
except
application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',mb_OK+mb_IconStop); Exit;
end;
//workBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)+'excel.xls');
WorkBook:=ExcelApp.workbooks.Add;
ExcelApp.Cells(1,1):='条数';
ExcelApp.Cells(1,2):='工号'; ExcelApp.Cells(1,3):='姓名';
ExcelApp.Cells(1,4):='人民币合计';
ExcelApp.Cells(1,5):='减除费用额'; ExcelApp.Cells(1,6):='应纳税所得税';
ExcelApp.Cells(1,7):='税率';
ExcelApp.Cells(1,8):='速算扣除数';
ExcelApp.Cells(1,9):='扣缴所得税额';
j:=1;
//.
CommUtils.initialTable(table3,TBLNAME_TAX+'.dbf');
//.
table3.Open;
table3.First;
for i:=2 to recycle_length+1 do
begin ExcelApp.Cells(i,1):=j;
ExcelApp.Cells(i,2):=table3.fieldbyname('T_id').Asstring;
ExcelApp.Cells(i,3):=table3.fieldbyname('T_name').Asstring;
ExcelApp.Cells(i,4):=table3.fieldbyname('T_total').Asfloat;
ExcelApp.Cells(i,5):=table3.fieldbyname('T_deduct').Asfloat; ExcelApp.Cells(i,6):=table3.fieldbyname('T_taxable').Asstring;
ExcelApp.Cells(i,7):=FloatToStr(table3.fieldbyname('T_taxrate').asFloat*100)+'%';
ExcelApp.Cells(i,8):=table3.fieldbyname('T_quick').Asfloat;
ExcelApp.Cells(i,9):=table3.fieldbyname('T_amountax').Asfloat; j:=j+1; table3.next;
progressbar1.position:=progressbar1.position+1;
progressbar1.refresh ;
end;
ExcelApp.Cells(recycle_length+2,1):='合计';
ExcelApp.Cells(recycle_length+2,6):=query4.Fields[1].Asfloat;
ExcelApp.Cells(recycle_length+2,9):=query4.Fields[2].Asfloat; WorkBook.SaveAS(xlsFileName); WorkBook.close;
ShowMessage('导入Excel成功!');
end
else
begin
with query4 do
begin
CommUtils.initialQuery(Query4,'select count(T_id),sum(T_taxable),sum(T_amountax) from tax'
+' where T_date = '+ #39+s_date+#39);
open;
recycle_length:=query4.Fields[0].AsInteger ;
end; with query5 do
begin
CommUtils.initialQuery(Query5,'select T_id,T_name,T_total,T_deduct,T_taxrate,T_quick, T_taxable,T_amountax from tax '
+'where T_date ='+ #39+s_date+#39+'order by T_id');
open;
end; progressbar1.Max := recycle_length;
progressbar1.position:=0;
try
ExcelApp:= CreateOleObject( 'Excel.Application' );
WorkBook:=CreateOleobject('Excel.Sheet');
except
application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',mb_OK+mb_IconStop); Exit;
end;
//workBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)+'excel.xls');
WorkBook:=ExcelApp.workbooks.Add;
ExcelApp.Cells(1,1):='条数';
ExcelApp.Cells(1,2):='工号'; ExcelApp.Cells(1,3):='姓名';
ExcelApp.Cells(1,4):='人民币合计';
ExcelApp.Cells(1,5):='减除费用额'; ExcelApp.Cells(1,6):='应纳税所得税';
ExcelApp.Cells(1,7):='税率';
ExcelApp.Cells(1,8):='速算扣除数';
ExcelApp.Cells(1,9):='扣缴所得税额'; j:=1;
CommUtils.initialTable(table3,TBLNAME_TAX+'.dbf');
table3.Open;
table3.First;
for i:=2 to recycle_length+1 do
begin ExcelApp.Cells(i,1):=j;
ExcelApp.Cells(i,2):=Query5.fieldbyname('T_id').Asstring;
ExcelApp.Cells(i,3):=Query5.fieldbyname('T_name').Asstring;
ExcelApp.Cells(i,4):=Query5.fieldbyname('T_total').Asfloat;
ExcelApp.Cells(i,5):=Query5.fieldbyname('T_deduct').Asfloat; ExcelApp.Cells(i,6):=Query5.fieldbyname('T_taxable').Asstring;
ExcelApp.Cells(i,7):=FloatToStr(Query5.fieldbyname('T_taxrate').asFloat*100)+'%';
ExcelApp.Cells(i,8):=Query5.fieldbyname('T_quick').Asfloat;
ExcelApp.Cells(i,9):=Query5.fieldbyname('T_amountax').Asfloat; j:=j+1; query5.next;
progressbar1.position:=progressbar1.position+1;
progressbar1.refresh ;
end;
ExcelApp.Cells(recycle_length+2,1):='合计';
ExcelApp.Cells(recycle_length+2,6):=query4.Fields[1].Asfloat;
ExcelApp.Cells(recycle_length+2,9):=query4.Fields[2].Asfloat; WorkBook.SaveAS(xlsFileName); WorkBook.close;
ShowMessage('导入Excel成功!'); end; end;end;