报表输出轻松搞定 一、刚刚开发了一个报表输出的 COM,可以动态的添加数据。代码没有限制,可随意使用。现在还在修改一些细节的地方,修改后会再次上传。 二、代码说明 1、首先注册COM控件 使用regsvr32命令三、图像 ![]() 第一个表格使用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); ---------------------------------------------------------------------------------------- //相当于反表,数据为一列一列的填 //strReportHead:"行名|行名|..." // otherColWide:第一列的宽度(写行名的那列) // ColWide:其它列的宽度 //注:字串strReportHead最后不以"|"结尾。 HRESULT SetReportHeadC([in]BSTR strReportHead,[in]int ColWide,[in]int otherColWide,[out,retval]long *pRet); ---------------------------------------------------------------------------------------- //相当于反表,数据为一列一列的填 //strReportHead:"行名|行名|..." // otherColWide:第一列的宽度(写行名的那列) // ColWide:其它列的宽度 //注:字串strReportHead最后不以"|"结尾。 HRESULT SetReportHeadD([in]BSTR strReportHead,[in]int ColWide,[in]int otherColWide,[out,retval]long *pRet); ---------------------------------------------------------------------------------------- //加入记录 HRESULT AddDetail([in]BSTR strItem,[out,retval]long *pRet); ---------------------------------------------------------------------------------------- //写文本,数字,注释等东东 HRESULT WriteText(BSTR strText, long *pRet); ---------------------------------------------------------------------------------------- HRESULT Print([out,retval]long *pRet); ---------------------------------------------------------------------------------------- //设置表的序号 HRESULT SetTableNo([in]BSTR strTableNo,[out,retval]long *pRet); ---------------------------------------------------------------------------------------- //强行分页 HRESULT NewPage([out,retval]long *pRet); ---------------------------------------------------------------------------------------- //双联表 HRESULT DrawDoubleTable([in]BSTR strTableOName,[in]BSTR strTableTName,[out,retval]long *pRet); ---------------------------------------------------------------------------------------- //添加制表人 HRESULT SetTableMaker([in] BSTR strTableMaker,[out,retval]long *pRet); 具体的用法请参见程序。希望可以节约大家的一些时间。代码没有限制,可随意使用。 |