前一久写一个delphi的导入导出功能,当时是没有一点头绪,现在已经完成了,把它记录在这里。
1.导出用DBGrid直接到剪切板,然后粘贴到excle就ok了,有什么Excle的格式之类的可能要设置一下:
{
1. StrTableName要查询的表名
2。StrFieldsName查询表的字段名
3。StrWhere查询条件
4。StrOrder 查询排序次序
}
procedure TFrmexportData.exportData(StrTableName:String;StrFieldsName:String='*';StrWhere:String='';StrOrder:String='');
var
str:String;
i:integer;
excelapp,sheet:Variant;
Col,Row:Integer;
ADOConn: TADOConnection;
ADOQueryExp: TADOQuery;
DataSourceExp: TDataSource;
DBGrid1: TsuiDBGrid;
begin
try
ADOConn:=TADOConnection.Create(nil);
ADOQueryExp:=TADOQuery.Create(nil);
DataSourceExp:= TDataSource.Create(nil);
DBGrid1:= TsuiDBGrid.Create(nil);
ADOConn.ConnectionString:='Provider=MSDAORA.1;Password=cdch0909;User ID=sa;Data Source=oracemcdch';
ADOConn.LoginPrompt:=false;
ADOConn.Connected:=true;
ADOQueryExp.Connection:=ADOConn;
DataSourceExp.DataSet:=ADOQueryExp;
DBGrid1.DataSource:= DataSourceExp;
with ADOQueryExp do
begin
Close;
SQL.Clear;
SQL.Add('select '+StrFieldsName+' from '+StrTableName+' '+StrWhere+' '+StrOrder);
Open;
Row:=RecordCount; //记录条数
if Row<=1 then
begin
showmessage('表中没有数据,不能导出');
exit;
end;
end;
//
str:='';
with DBGrid1 do
begin
DataSource.DataSet.DisableControls;
Col:=DataSo