没有合适的资源?快使用搜索试试~ 我知道了~
delphi DBGridEh多标头快速导出excel方法
需积分: 21 11 下载量 116 浏览量
2013-03-23
08:37:59
上传
评论
收藏 13KB TXT 举报
温馨提示
优化了zxf668之前对DBGridEh多标头导出excel方法,对大数据的导出,优化了导出方法。
资源推荐
资源详情
资源评论


















----------------准备
该方法使用到3个office控件,如果是Delphi2010版本,请按照以下方法添加:
Component->Install packages...->Add... 安装 dcloffice2k140.bpl 即可。
(dcloffice2k140.bpl 位于 C:\Program Files\Embarcadero\RAD Studio\7.0\bin);
然后把TExcelApplication,TExcelWorksheet,TExcelWorkbook拉到窗体上。
-----------------实现代码
public
procedure ExportExcelEh(const CurDS : TDBGridEh; vSum: Boolean = false; Title: String ='');
end;
-----------------输入参数说明:CurDS 是导出多表头的DBGridEh, vSum 是否添加自动汇总, Title标题
procedure Tmain_Form.ExportExcelEh(const CurDS : TDBGridEh; vSum: Boolean = false; Title: String ='');
var
nowhangi, i, j, k, ii, LCID, liRecNu, liFieldNu: integer; //nowhangi当前 execl的所在行,jilushu当前的记录位置
lsFile, cols, lsstr: string;
ExcelApplication1: TExcelApplication;
ExcelWorkbook1: TExcelWorkbook;
ExcelWorkSheet1: TExcelWorksheet;
xl: OleVariant;
SaveDialog1: TSaveDialog;
rowCount, Colcount, index: Integer;
isGroups: Boolean;
MultiArr: OleVariant;
function RefToCell(RowID, ColID: Integer): string;
var
ACount, APos: Integer;
begin
ACount := ColID div 26;
APos := ColID mod 26;
if APos = 0 then
begin
ACount := ACount - 1;
APos := 26;
end;
if ACount = 0 then
Result := Chr(Ord('A') + ColID - 1) + IntToStr(RowID);
if ACount = 1 then
Result := 'A' + Chr(Ord('A') + APos - 1) + IntToStr(RowID);
if ACount > 1 then
Result := Chr(Ord('A') + ACount - 1) + Chr(Ord('A') + APos - 1) + IntToStr(RowID);
end;
/////////TADOQuery
function getData(ds: TDataSet): OleVariant;
var
Data: OLEVariant;
i,j,k : Integer;
begin
rowCount := ds.RecordCount-Pos('|', CurDS.Columns.Items[i].Title.Caption) ;
colCount := ii;//ds.FieldCount;
Data := VarArrayCreate([1, rowCount, 1, colCount], varVariant); //1,rowCount 表示第一维数组的上下标,1,colCount表示第二维数组的上下标
i := 1;
{ for j := 0 to colCount - 1 do
begin
begin
ACount := ColID div 26;
APos := ColID mod 26;
if APos = 0 then
begin
ACount := ACount - 1;
APos := 26;
end;
if ACount = 0 then
Result := Chr(Ord('A') + ColID - 1) + IntToStr(RowID);
if ACount = 1 then
Result := 'A' + Chr(Ord('A') + APos - 1) + IntToStr(RowID);
if ACount > 1 then
Result := Chr(Ord('A') + ACount - 1) + Chr(Ord('A') + APos - 1) + IntToStr(RowID);
end;
/////////TADOQuery
function getData(ds: TDataSet): OleVariant;
var
Data: OLEVariant;
i,j,k : Integer;
begin
rowCount := ds.RecordCount-Pos('|', CurDS.Columns.Items[i].Title.Caption) ;
colCount := ii;//ds.FieldCount;
Data := VarArrayCreate([1, rowCount, 1, colCount], varVariant); //1,rowCount 表示第一维数组的上下标,1,colCount表示第二维数组的上下标
i := 1;
{ for j := 0 to colCount - 1 do
begin
剩余12页未读,继续阅读
资源评论


zengqp
- 粉丝: 6
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 三网融合和G技术将加速移动通信媒体发展.doc
- 工厂化肉鸡物联网精细饲养技术探析.docx
- 机器学习研究进展.ppt
- 局域网网络工程配置手册(经典).doc
- 过生日MicrosoftPowerPoint演示文稿.ppt
- T6餐饮管理软件产品整合营销工具(独立餐饮售前演示).ppt
- 单片机电子时钟和显示屏设计.doc
- 2007年9月全国计算机等级历年考试二级C语言31076.doc
- 图像处理与计算机视觉技术综述.ppt
- 关于计算机网络安全防御技术分析.docx
- 思维导图:提升高中信息技术课堂效率的和剑教育信息化.docx
- 土地管理信息化建设路径.docx
- 基于ATC单片机的家庭防盗报警系统设计.doc
- 计算机网络环境下大学英语网络课堂教学组织的有效研究.docx
- 新建本科院校计算机基础教育的问题与对策.docx
- PLC在多段调速系统中应用.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
