报表输出轻松搞定2010-07-06 VC知识库 一行代码一、刚刚开发了一个报表输出的 COM,可以动态的添加数据。代码没有限制,可随意使用。现在还在修改一些细节的地方,修改后会再次上传。二、代码说明
1、首先注册COM控件 使用regsvr32命令
2、在stdafx中加入#import ".YTReport.tlb"
rename_namespace("TestYTReportDriver")
using namespace TestYTReportDriver;
3、在APP文件中加入CoInitialize(NULL);和CoUninitialize();用于初始化COM环境和释放环境
4、建立变量IYTReportAPtr m_YTPrint;
初始化:
m_YTPrint = NULL;
if (FAILED(m_YTPrint.CreateInstance(__uuidof(YTReportA))))
{
MessageBox("清先注册COM","提示");
}
5、程序可以输出双联表和普通模式
普通模式分为正表和反表两种
6、当然程序推出时别忘了释放对象
m_YTPrint.Release();三、图像

第一个表格使用SetReportHeadA实现第二个表格使用SetReportHeadB实现第三个表格使用SetReportHeadC实现-----------------------------COM接口标示------------------------------------------------//准备打印HRESULT PrePrint([out,retval]long *pRet);----------------------------------------------------------------------------------------//设置主标题HRESULT SetTitleA([in]BSTR MyTitle,[out,retval]long *pRet);----------------------------------------------------------------------------------------//设置副标题HRESULT SetTitleB([in]BSTR MyTitle,[out,retval]long *pRet);----------------------------------------------------------------------------------------//strReportHead"列名|对齐方式(m,l,r)|该列宽度(以一个数字的宽度为单位)|..."//注:该字串最后不以"|"结尾。HRESULT SetReportHeadA([in]BSTR strReportHead,[out,retval]long *pRet);----------------------------------------------------------------------------------------//strReportHead:"项目名|项目名|..." (各统计项名称)// ColWide:统计项对应列的宽度// ColNum:表格所含列数//注:字串SubItemName最后不以"|"结尾。// 采取自动与第一个表宽度对齐的机制。HRESULT SetReportHeadB([in]BSTR strReportHead,[in]int ColWide,[in]int ColNum,[out,retval]long *pRet);----------------------------------------------------------------------------------------