把数据集保存为excel格式的一个实现_delphi教程
来源:互联网 发布:c语言求整数的绝对值 编辑:程序博客网 时间:2024/06/05 14:08
经常看到有人问如何把Delphi中的数据集导入Excel中,这里提供了一个实现。
在做项目时,很多情况下,客户需要对程序中数据集再加工,再利用,如报表。
这时,就需要把DataSet导入到一个客户比较熟悉的格式中去。Excel是首选了。
该程序在Delphi4,5下编译通过,已被用在多个项目中。还被集成在笔者所写的一个小组件TDBNavigateButton中
{-------------------------------------------------------------------------------------------------
单元:uExcelTools
作者: Bear
功能:保存数据集,如TTable,TQuery,TClientDataSet等为Excel文件,
包含标题,可以只将一部分字段导出
这一点通过设置DataSet中要不导出字段的Tag值大于某一个值来处理
原理:调用 Microsoft Excel Ole对象
调用方式:
Function DataSetToExcel(
DataSet:TDataSet;FieldTagMax:Integer;
Visible:Boolean;ExcelFileName:String=): Boolean;
--------------------------------------------------------------------------------------------------}
unit UExcelTools;
interface
uses
classes, comctrls, stdctrls, windows, Dialogs, controls, SysUtils,
Db,forms,DBClient,ComObj;
//把数据集导入ExcelSheet的核心函数
function DataSetToExcelSheet
(
DataSet :TDataSet;
FieldTagMax :Integer; // 字段的Tag值如果大于这个值,就不导出到Excel
Sheet :OleVariant
): Boolean;
//实际使用的函数,内部调用了DataSetToExcelSheet,在外面加入UI接口和错误处理
function DataSetToExcel
(
DataSet :TDataSet; // 要转换的数据集
FieldTagMax :Integer; // 字段的Tag值如果大于这个值,就不导出到Excel
Visible :Boolean; // 是否让做转换工作的Excel可见
ExcelFileName:String= // Excel文件名,*.xls
): Boolean;
implementation
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=): 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;
Result:=SaveDialog.Execute;
UpdateWindow(GetActiveWindow);
if Result then
WorkBook.SaveAs(FileName:=SaveDialog.FileName);
SaveDialog.Free;
end;
Excel.Quit;
end;
Screen.Cursor:=OldCursor;
end;
end.
- 把数据集保存为excel格式的一个实现_delphi教程
- 将数据集转换为Excel格式的一个实现
- python 将数据保存为excel的xls格式
- 利用indy的tidftp控件实现ftp协议_delphi教程
- [VC]怎么样把CDC上的一个图保存为bmp格式的图
- 怎么样把CDC上的一个图保存为bmp格式的图
- 把CD上的一个图保存为bmp格式的图
- 怎么样把CDC上的一个图保存为bmp格式的图
- 怎么样把CDC上的一个图保存为bmp格式的图
- 把数据转成excel格式的方法
- JAVA 实现下载功能 保存为EXCEL格式
- Android 把YUV420P格式的数据转换为RGB565格式
- 把excel的一列设置为文本格式
- python把Teslink导出的xml格式转换为excel
- python把excel文件转换为指定的json格式
- delphi 使用把数据集导出为excel文件 (适合安装Excel的机器)
- 把32位等任意格式图片灰度化并把图像数据保存为文本文件
- delphi7中如何把数据库中数据保存为excel文件
- JS日期格式设置
- Linux系统中如何添加自己的库文件路径
- android语言切换问题
- python逆向和代码测试
- androidEmail缺陷
- 把数据集保存为excel格式的一个实现_delphi教程
- ailed to load properties file for project
- Mobile与PC机通过RDA同步
- js拼装查询条件字符串
- jsonc demo
- JS获取IPMax地址计算机名
- 母板页中的content标签
- css控制隔行样式
- BS.net程序员