VC中调用EXECL模板生成报表

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

VC中调用EXECL模板生成报表

作者:叶利华

下载源代码

用EXCEL作为报表的输出方式还是比较常用的方式,这样可以充分利用EXCEL的强大的编辑功能,以及打印功能。而采用模板方式是比较好的方法,首先在EXCEL中制作模板,然后在生成报表时调用模板。这样能方便的生成我们需要的报表。这里主要描述如何加载模板和添加每页报表。代码如下:

void CExceltestDlg::OnButton1()

{

// TODO: Add your control notification handler code here

_Application ExcelApp;

Workbooks wbsMyBooks;

_Workbook wbMyBook;

Worksheets wssMysheets;

_Worksheet wsMysheet;

Range rgMyRge;

//创建Excel 2000服务器(启动Excel)

if (!ExcelApp.CreateDispatch("Excel.Application",NULL))

{

AfxMessageBox("创建Excel服务失败!");

exit(1);

}

ExcelApp.SetVisible(false);

//利用模板文件建立新文档

char path[MAX_PATH];

GetCurrentDirectory(MAX_PATH,path);

CString strPath = path;

strPath += "\\template1";

wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);

wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));

//得到Worksheets

wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);

//得到sheet1

wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);

//添加模板个数

for(int i=0;i

//此地方该显示时缺少两项

wsMysheet = wsMysheet.GetNext();

str1.Format("第%d页",i+2);

wsMysheet.SetName(str1);

}

wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("第1页")),true);

//得到全部Cells,此时,rgMyRge是cells的集合

rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);

//设置1行1列的单元的值

CString str=_TEXT("21:12");

rgMyRge.SetItem(_variant_t((long)7),_variant_t((long)3),_variant_t(str));

rgMyRge.SetItem(_variant_t((long)9),_variant_t((long)3),_variant_t(str));

rgMyRge.SetItem(_variant_t((long)7),_variant_t((long)4),_variant_t(str));

rgMyRge.SetItem(_variant_t((long)8),_variant_t((long)4),_variant_t(str));

rgMyRge.SetItem(_variant_t((long)9),_variant_t((long)4),_variant_t(str));

rgMyRge.SetItem(_variant_t((long)10),_variant_t((long)4),_variant_t(str));

rgMyRge.SetItem(_variant_t((long)11),_variant_t((long)4),_variant_t(str));

rgMyRge.SetItem(_variant_t((long)12),_variant_t((long)4),_variant_t(str));

//将表格保存

strPath = path;

strPath += "\\ylhexcel.xls";

wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,

vtMissing,vtMissing,vtMissing,vtMissing);

ExcelApp.SetVisible(true);

wbMyBook.PrintPreview(_variant_t(false));

//释放对象

rgMyRge.ReleaseDispatch();

wsMysheet.ReleaseDispatch();

wssMysheets.ReleaseDispatch();

wbMyBook.ReleaseDispatch();

wbsMyBooks.ReleaseDispatch();

ExcelApp.ReleaseDispatch();

}

结果得到如下图:

图一 添加完表格得到的报表

图二 模版

希望能给需要的朋友有所帮助,也希望各位朋友能提出更好的使用方法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航