利用Delphi查询SQL相关数据,然后再利用Delphi控件导出为Excel文档 请各位大侠指点有没有实例首先利用Delphi查询SQL相关表格的数据然后再利用Delphi将查询出的数据导出为Excel文档在线等待各位高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TADOQuery -> TDBGridEh -> Excel 网上例子多呀!www.2ccc.com 给你两个函数,可直接从DataSet输出Excel//**********************************XLS EXPORTS********************************// from http://www.swissdelphicenter.ch/torry/showcode.php?id=379//直接从DataSet输出Excelfunction SaveAsExcelFile(ADataSet: TDataSet; AFileName: string): Boolean;const {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-} CXlsEof: array[0..1] of Word = ($0A, 00);var FStream: TFileStream; ICol, iRow: Integer; procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word; const AValue: string); var L: Word; const {$J+} CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0); {$J-} begin L := Length(AValue); CXlsLabel[1] := 8 + L; CXlsLabel[2] := ARow; CXlsLabel[3] := ACol; CXlsLabel[5] := L; XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel)); XlsStream.WriteBuffer(Pointer(AValue)^, L); end;begin Result := False; FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite); try CXlsBof[4] := 0; FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof)); ADataSet.DisableControls; ADataSet.first;iRow := 0; while not ADataSet.EOF do begin iRow := iRow+1; for ICol := 0 to ADataSet.FieldCount - 1 do XlsWriteCellLabel(FStream, ICol+1, iRow,ADataSet.Fields[ICol].AsString); ADataSet.Next; end; ADataSet.DisableControls; FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof)); Result := True; finally FStream.Free; end;end;//直接从DataSet输出CSVfunction SaveAsCSVFile(ADataSet: TDataSet; AFileName: string; sSepar : string =',';sQuote : string ='"'): Boolean;var tsOut : tStringList; ICol,iLen: Integer; sTemp,sLine : string;begin Result := False; tsOut := TStringList.Create; try ADataSet.DisableControls; ADataSet.first; while not ADataSet.EOF do begin sLine :=''; for ICol := 0 to ADataSet.FieldCount - 1 do begin sTemp := sQuote+ ADataSet.Fields[ICol].AsString + sQuote; if ICol >0 then sTemp := sSepar + sTemp; sLine := sLine+sTemp; end; tsOut.Add(sLine); ADataSet.Next; end; tsOut.SaveToFile(AFileName); ADataSet.DisableControls; Result := True; finally tsOut.Free; end;end; 请教:delphi如何让代码自动排列?相当于MS VC的ALT+F8功能 求dbgrideh for delphi2007 RAVE的初级问题 调用DLL窗体后的问题? 线程操作数据库的问题 跪求条码问题 写入数据库的问题 dbgrid和excel TlistView控件,怎么清空其内容? 非技术问题:各位大虾,去哪里寻找OPGL的资料? ADOQUERY缓存更新如何设置? 关于BDE打包问题
www.2ccc.com
// from http://www.swissdelphicenter.ch/torry/showcode.php?id=379//直接从DataSet输出Excel
function SaveAsExcelFile(ADataSet: TDataSet; AFileName: string): Boolean;
const
{$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-}
CXlsEof: array[0..1] of Word = ($0A, 00);
var
FStream: TFileStream;
ICol, iRow: Integer; procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
const AValue: string);
var
L: Word;
const
{$J+}
CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
{$J-}
begin
L := Length(AValue);
CXlsLabel[1] := 8 + L;
CXlsLabel[2] := ARow;
CXlsLabel[3] := ACol;
CXlsLabel[5] := L;
XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
XlsStream.WriteBuffer(Pointer(AValue)^, L);
end;
begin
Result := False;
FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite);
try
CXlsBof[4] := 0;
FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
ADataSet.DisableControls;
ADataSet.first;iRow := 0;
while not ADataSet.EOF do
begin
iRow := iRow+1;
for ICol := 0 to ADataSet.FieldCount - 1 do
XlsWriteCellLabel(FStream, ICol+1, iRow,ADataSet.Fields[ICol].AsString);
ADataSet.Next;
end;
ADataSet.DisableControls;
FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
Result := True;
finally
FStream.Free;
end;
end;//直接从DataSet输出CSV
function SaveAsCSVFile(ADataSet: TDataSet; AFileName: string;
sSepar : string =',';sQuote : string ='"'): Boolean;
var
tsOut : tStringList;
ICol,iLen: Integer;
sTemp,sLine : string;
begin
Result := False;
tsOut := TStringList.Create;
try
ADataSet.DisableControls;
ADataSet.first;
while not ADataSet.EOF do
begin
sLine :='';
for ICol := 0 to ADataSet.FieldCount - 1 do
begin
sTemp := sQuote+ ADataSet.Fields[ICol].AsString + sQuote;
if ICol >0 then sTemp := sSepar + sTemp;
sLine := sLine+sTemp;
end;
tsOut.Add(sLine);
ADataSet.Next;
end;
tsOut.SaveToFile(AFileName);
ADataSet.DisableControls;
Result := True;
finally
tsOut.Free;
end;
end;