Function DataSetToTXT(DataSet:TDataSet;FileName:String):Boolean;
var
s:TStringList;
str:string;
i:integer;
SaveDialog:TSaveDialog;
BK:TBookMark;
begin
s:=TStringList.Create;
BK:=DataSet.GetBookMark;
DataSet.DisableControls;
DataSet.First;
while not DataSet.Eof do
begin
str:='';
for i:=0 to DataSet.FieldCount-1 do
begin
if str='' then
str:=str+DataSet.Fields[i].AsString
else str:=str+'|'+DataSet.Fields[i].AsString;
end;
s.Add(str);
DataSet.Next;
end;
DataSet.GotoBookMark(BK);
DataSet.EnableControls;
SaveDialog:=TSaveDialog.Create(Nil);
SaveDialog.Filter:='文本文件(*.txt)|*.txt';
SaveDialog.Title:='将'+FileName+'数据表导出文本文件';
SaveDialog.FileName:=FileName+'.txt';
Result:=SaveDialog.Execute;
UpdateWindow(GetActiveWindow);
if Result then
s.SaveToFile(SaveDialog.FileName);
SaveDialog.Free;
s.Free;
end;
Function DataSetToExcelSheet(DataSet:TDataSet;FieldTagMax:Integer;Sheet:OleVariant):Boolean;
var
Row,Col,FieldIndex:Integer;
BK:TBookMark;
begin
Result := False;
if not Dataset.Active then exit;
BK:=DataSet.GetBookMark;
DataSet.DisableControls;
Sheet.Activate;
try
// 列标题
Row:=1;
Col:=1;
for FieldIndex:=0 to DataSet.FieldCount-1 do
begin
if DataSet.Fields[FieldIndex].Tag<=FieldTagMax then
begin
Sheet.Cells(Row,Col):=DataSet.Fields[FieldIndex].DisplayLabel;
Inc(Col);
end;
end;
// 表内容
DataSet.First;
while Not DataSet.Eof do
begin
Row:=Row+1;
Col:=1;
for FieldIndex:=0 to DataSet.FieldCount-1 do
begin
if DataSet.Fields[FieldIndex].Tag<=FieldTagMax then
begin
Sheet.Cells(Row,Col):=DataSet.Fields[FieldIndex].AsString;
Inc(Col);
end;
end;
DataSet.Next;
end;
Result:=True;
finally
DataSet.GotoBookMark(BK);
DataSet.EnableControls;
end;
end;
Function DataSetToExcel(DataSet:TDataSet;FieldTagMax:Integer;Visible:Boolean;ExcelFileName:String='';FileName:String=''):Boolean;
var
ExcelObj,Excel,WorkBook,Sheet:OleVariant;
OldCursor:TCursor;
SaveDialog:TSaveDialog;
begin
Result:=False;
if not Dataset.Active then exit;
OldCursor:=Screen.Cursor;
Screen.Cursor:=crHourGlass;
try
ExcelObj:=CreateOleObject('Excel.Sheet');
Excel:=ExcelObj.Application;
Excel.Visible:=Visible;
WorkBook:=Excel.Workbooks.Add;
Sheet:=WorkBook.Sheets[1];
except
MessageBox(GetActiveWindow,'无法调用Mircorsoft Excel! '+chr(13)+chr(10)+'请检查是否安装了Mircorsoft Excel!','提示',MB_OK+MB_ICONINFORMATION);
Screen.Cursor:=OldCursor;
Exit;
end;
Result:=DataSetToExcelSheet(DataSet,FieldTagMax,Sheet);
if Result then
if Not Visible then
begin
if ExcelFileName<>'' then
WorkBook.SaveAs(FileName:=ExcelFileName)
else
begin
SaveDialog:=TSaveDialog.Create(Nil);
SaveDialog.Filter:='Microsoft Excel 文件(*.xls)|*.xls';
SaveDialog.Title:='将'+FileName+'数据表导出Excel文件';
SaveDialog.FileName:=FileName+'.xls';
Result:=SaveDialog.Execute;
UpdateWindow(GetActiveWindow);
if Result then
WorkBook.SaveAs(FileName:=SaveDialog.FileName);
SaveDialog.Free;
end;
Excel.Quit;
end;
Screen.Cursor:=OldCursor;
end;