2023年11月30日发(作者:)
维普资讯
VC中基于ActiveX Automation 技术的EXECL报表实现
西南交通大学周小平陶莹杜轶波侯爱黎
Visual c++具有强大的功能,许多软件都用来开发 在利用
VC开发软件时.经常要将数据输出报表,但、’c中并没有提供
报表输出的功能模块,Excel具有强大的表格功能,如果将VC中
报表数据输出到Excel中或直接生成Excel报表文档,然后在
sExcelFile):
if(darabase.OpenEx(sSq1.CDatabase::noOdbcDialog))//创建数据库
I即创建Excel文件)
(,/创建表结构(K,QJ,H1,Q1,M12,H2,Q2,M22,M3:为字段名称,
sSql=“CREATE TABLE”+sTableFile+” (K TEXT,QJ TEXT,
HI TEXT.Qi TEXT,M12 TEXT,H2 TEXT,Q2 TEXT,M22 TEXT,M3 TEx ”;
Excel中对该数据进行进一步的格式化处理等操作,是一个高效
便捷的途径:ActiveX Automation是微软公司推出的一个技术标
准,该技术是OLE技术的进一步扩展,允许应用程序之间相互
控制、相互调用。Excel将电子表格暴露为自动化对象,并具有处
理电子表格中的单元、行或列的接口,因此可利用Excel的
XctixeX Mltomate功能,VC编写0I E Automation的客户机,而让
,
database.ExecutesQL(ssq1)://创建新的Excel文件
CString str;,m
m
K,m
_
Ql,m—H1,m_Q1,m—M12,m_H2,m—Q2,
M22,mM3;
—
//循环将VC中的报表数据写入Excel文件的单元格中。
for(int..O:I<HL d.GetRows 0一l;i++)
Ex(、el作为OLE Automation服务器,通过程序接口实现数据报表
到Excel
f m—K=m_grid.GetTextMatrix(i+1,1);//第1列数据
…
一
(其他列这里忽略)
1 Excel对象模型概述
要利用Excel的ActixreX Automate功能,实现数据报表的输
出.必须与Excel对象模型提供的对象进行交互 Excel提供了数
//建立写入Excel文件的SQL语句
sSql,Fommt INSERT INTO”+sTableFile+”(K,QJ.H1,Q1,M12,H2,
Q2,M22、M3)VALUES(’%s’,’%s’.’%s’,’%s’.’%s’.’%St'%s’,’%s’,’%s’)“,m—K,
nl
百个可能需要与之交互的对象,下面只介绍编程中要用到的儿
个{lf象
QJ,m—Hl,m—Q1,m—M12,m—H2.m_Q2,m—M22,m—M3);
datbase.aExecuteSQL(sSq1); }
)
Application对象:Application对象提供了大量有关正在运
行的应用程序、应用于该实例的选项以及在该实例中打开的当
前用户的对象的信息?②Workbook对象:Workbook类表示Excel
用程序内的单个工作簿 Workshee!对象:虽然研r …ef类
提供了大量成员.但大部分属性、方法和事件都与Workbook类
提供的成员相同或相似: ̄Range对象:Range对象表示一 单
元格、一行、…列、包含一个或多个单元格块
MessageBox(”Excel文件”+sEx(-elFil ”输出成功!”,”输出到Excel
文件”);//输H1完成
1写入完成后Excel中的数据。
3定制模板写入方式
3.1 利用Excel创建报表的模板文件
Excel具有强大的电子表格制作功能,利用其单元格的拆
分、合并和格式设定,可以方便、快捷地绘制空白表格文档,并可
以随时根据实际情况,重新设定报表格式,生成满足用户要求的
模板文件,实现各种复杂格式的报表。若需要改变表格格式,只
需要将模板文件稍加修改即可。程序将调用模板进行报表输出,
罔1为建立好的模板文件示例。非常重要的一点,就是打印标题
2直接生成新的Excel文档,将数据写入
生rJ艾Ext-el报表最简单的方式.就是在VC中,通过程序创
建一个新的Excel文件,然后直接将报表数据输出到该Excel文
件中.实现代码如下:
//功能:创建新的Excel文件,并将报表数据输出到泫文件中
、oid CQxhl,:: ̄ riteTo—Ex(。el()
{CDafahiL%e datbaase:
的设置,对于图1所示的模板而言,顶端标题行为¥1:¥4,左端标
题列为¥A:SR,这样对于多页的情况下,每页会自动加上表头标
题。
CFileDialag dig(FAISE.”Ex(-el文件”.NULL.OFN
HIDEREAI)ONL'I .”Excel文件( .xls)t*.xls!r',NUI L、:
CString sex( elFile=dlg.CetPathName 0://得到要建立的E e1文什
名
3.2 创建Excel服务器,并打开模板,为写入数据作准备
if(.'ExeelApp.CreateDispatch(”Exce1.Application",NULL))//如果创建
Excel服务失败,返回
CSl riI1g s rabl Fil :dlg.GdFil Titl 0I/,要创建的表名 {AfxMessageB Ⅸ(“创建Excel服务失败 : xit(1):
) //创建进行存取的字符串
//打开模板文件,为写人数据作准备 sSq1.Fomlat(”DRI\’EP,:f% ):Ds :”:F1RSTRO ̄XrHASNA—MES:1:
‘1ha*path[MAX—PATH]; DB_\”呸s\”:DBQ=% sDriver,sExcel1 ̄ ilP.
READONI Y:FALqE:CRE,4]‘E
:r
-i-
A
- 二__ 1i 蔓C:二厦: l--T-l- -
i~ --i.. .. rj叠 :.工 二:[ Ⅱ团 圈
右轨向 轨距 右高钮 左轨向
1 段养路 问均值统进
2
左高钮
一一一一一
3检测日期丁务段名称
车间名称均 超过统汁值
均 超过统计值 均 超过统计值 均 超过统计值I均 超过统计值
f一…——一_一一…一一
4
5
侦区段数百分比
值 b-F S( R. ̄百分比值区段数百分比。值区段数百分比值区段数百分比:
图1 横板示例
(下转第61页)


发布评论