资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
Delphi编程将数据库数据快速导入ExcelarXlsEnd: array0.1 of Word = ($0A, 00);arXlsString: array0.5 of Word = ($204, 0, 0, 0, 0, 0);arXlsNumber: array0.4 of Word = ($203, 14, 0, 0, 0);arXlsInteger: array0.4 of Word = ($27E, 10, 0, 0, 0);arXlsBlank: array0.4 of Word = ($201, 6, 0, 0, $17); 接着调用下面的函数。 Procedure ExportExcelFile(FileName: string; bWriteTitle: Boolean; aDataSet: TDataSet); vari, j: integer;Col, row: word;ABookMark: TBookMark;aFileStream: TFileStream;procedure incColRow; /增加行列号beginif Col = ADataSet.FieldCount - 1 thenbeginInc(Row);Col :=0;endelseInc(Col);end;procedure WriteStringCell(AValue: string);/写字符串数据varL: Word;beginL := Length(AValue);arXlsString1 := 8 + L;arXlsString2 := Row;arXlsString3 := Col;arXlsString5 := L;aFileStream.WriteBuffer(arXlsString, SizeOf(arXlsString);aFileStream.WriteBuffer(Pointer(AValue), L);IncColRow;end;procedure WriteIntegerCell(AValue: integer);/写整数varV: Integer;beginarXlsInteger2 := Row;arXlsInteger3 := Col;aFileStream.WriteBuffer(arXlsInteger, SizeOf(arXlsInteger);V := (AValue shl 2) or 2;aFileStream.WriteBuffer(V, 4);IncColRow;end;procedure WriteFloatCell(AValue: double);/写浮点数beginarXlsNumber2 := Row;arXlsNumber3 := Col;aFileStream.WriteBuffer(arXlsNumber, SizeOf(arXlsNumber);aFileStream.WriteBuffer(AValue, 8);IncColRow;end;beginif FileExists(FileName) then DeleteFile(FileName); /文件存在,先删除aFileStream := TFileStream.Create(FileName, fmCreate);Try/写文件头aFileStream.WriteBuffer(arXlsBegin, SizeOf(arXlsBegin);/写列头Col := 0; Row := 0;if bWriteTitle thenbeginfor i := 0 to aDataSet.FieldCount - 1 doWriteStringCell(aDataSet.Fieldsi.FieldName);end;/写数据集中的数据aDataSet.DisableControls;ABookMark := aDataSet.GetBookmark;aDataSet.First;while not aDataSet.Eof dobeginfor i := 0 to aDataSet.FieldCount - 1 docase ADataSet.Fieldsi.DataType offtSmallint, ftInteger, ftWord, ftAutoInc, ftBytes:WriteIntegerCell(aDataSet.Fieldsi.AsInteger);ftFloat, ftCurrency, ftBCD:WriteFloatCell(aDataSet.Fieldsi.AsFloat)elseWriteStringCell(aDataSet.Fieldsi.AsString);end;aDataSet.Next;end;/写文件尾AFileStream.WriteBuffer(arXlsEnd, SizeOf(arXlsEnd);if ADataSet.BookmarkValid(ABookMark) then aDataSet.GotoBookmark(ABookMark);FinallyAFileStream.Free;ADataSet.EnableControls;end;end;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号