VC中调用EXECL模板生成报表
来源:互联网 发布:怎样在matlab2014编程 编辑:程序博客网 时间:2024/05/16 10:47
用EXCEL作为报表的输出方式还是比较常用的方式,这样可以充分利用EXCEL的强大的编辑功能,以及打印功能。而采用模板方式是比较好的方法,首先在EXCEL中制作模板,然后在生成报表时调用模板。这样能方便的生成我们需要的报表。这里主要描述如何加载模板和添加每页报表。代码如下:
01.
void
CExceltestDlg::OnButton1()
02.
{
03.
// TODO: Add your control notification handler code here
04.
_Application ExcelApp;
05.
Workbooks wbsMyBooks;
06.
_Workbook wbMyBook;
07.
Worksheets wssMysheets;
08.
_Worksheet wsMysheet;
09.
Range rgMyRge;
10.
//创建Excel 2000服务器(启动Excel)
11.
if
(!ExcelApp.CreateDispatch(
"Excel.Application"
,NULL))
12.
{
13.
AfxMessageBox(
"创建Excel服务失败!"
);
14.
exit
(1);
15.
}
16.
ExcelApp.SetVisible(
false
);
17.
//利用模板文件建立新文档
18.
char
path[MAX_PATH];
19.
GetCurrentDirectory(MAX_PATH,path);
20.
CString strPath = path;
21.
strPath +=
"\\template1"
;
22.
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),
true
);
23.
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
24.
//得到Worksheets
25.
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),
true
);
26.
//得到sheet1
27.
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(
"sheet1"
)),
true
);
28.
//添加模板个数
29.
for
(
int
i=0;i<4;i++){
30.
wsMysheet.Copy(vtMissing,_variant_t(wsMysheet));
31.
}
32.
CString str1;
33.
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(
"sheet1"
)),
true
);
34.
str1 =
"第1页"
;
35.
wsMysheet.SetName(str1);
36.
for
(i=0;i<wssMysheets.GetCount()-1;i++){
37.
//此地方该显示时缺少两项
38.
wsMysheet = wsMysheet.GetNext();
39.
str1.Format(
"第%d页"
,i+2);
40.
wsMysheet.SetName(str1);
41.
}
42.
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(
"第1页"
)),
true
);
43.
//得到全部Cells,此时,rgMyRge是cells的集合
44.
rgMyRge.AttachDispatch(wsMysheet.GetCells(),
true
);
45.
//设置1行1列的单元的值
46.
CString str=_TEXT(
"21:12"
);
47.
rgMyRge.SetItem(_variant_t((
long
)7),_variant_t((
long
)3),_variant_t(str));
48.
rgMyRge.SetItem(_variant_t((
long
)9),_variant_t((
long
)3),_variant_t(str));
49.
rgMyRge.SetItem(_variant_t((
long
)7),_variant_t((
long
)4),_variant_t(str));
50.
rgMyRge.SetItem(_variant_t((
long
)8),_variant_t((
long
)4),_variant_t(str));
51.
rgMyRge.SetItem(_variant_t((
long
)9),_variant_t((
long
)4),_variant_t(str));
52.
rgMyRge.SetItem(_variant_t((
long
)10),_variant_t((
long
)4),_variant_t(str));
53.
rgMyRge.SetItem(_variant_t((
long
)11),_variant_t((
long
)4),_variant_t(str));
54.
rgMyRge.SetItem(_variant_t((
long
)12),_variant_t((
long
)4),_variant_t(str));
55.
//将表格保存
56.
strPath = path;
57.
strPath +=
"\\ylhexcel.xls"
;
58.
wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,
59.
vtMissing,vtMissing,vtMissing,vtMissing);
60.
ExcelApp.SetVisible(
true
);
61.
wbMyBook.PrintPreview(_variant_t(
false
));
62.
//释放对象
63.
rgMyRge.ReleaseDispatch();
64.
wsMysheet.ReleaseDispatch();
65.
wssMysheets.ReleaseDispatch();
66.
wbMyBook.ReleaseDispatch();
67.
wbsMyBooks.ReleaseDispatch();
68.
ExcelApp.ReleaseDispatch();
69.
}
结果得到如下图:
图一 添加完表格得到的报表
图二 模版
希望能给需要的朋友有所帮助,也希望各位朋友能提出更好的使用方法。
01.
void
CExceltestDlg::OnButton1()
02.
{
03.
// TODO: Add your control notification handler code here
04.
_Application ExcelApp;
05.
Workbooks wbsMyBooks;
06.
_Workbook wbMyBook;
07.
Worksheets wssMysheets;
08.
_Worksheet wsMysheet;
09.
Range rgMyRge;
10.
//创建Excel 2000服务器(启动Excel)
11.
if
(!ExcelApp.CreateDispatch(
"Excel.Application"
,NULL))
12.
{
13.
AfxMessageBox(
"创建Excel服务失败!"
);
14.
exit
(1);
15.
}
16.
ExcelApp.SetVisible(
false
);
17.
//利用模板文件建立新文档
18.
char
path[MAX_PATH];
19.
GetCurrentDirectory(MAX_PATH,path);
20.
CString strPath = path;
21.
strPath +=
"\\template1"
;
22.
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),
true
);
23.
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
24.
//得到Worksheets
25.
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),
true
);
26.
//得到sheet1
27.
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(
"sheet1"
)),
true
);
28.
//添加模板个数
29.
for
(
int
i=0;i<4;i++){
30.
wsMysheet.Copy(vtMissing,_variant_t(wsMysheet));
31.
}
32.
CString str1;
33.
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(
"sheet1"
)),
true
);
34.
str1 =
"第1页"
;
35.
wsMysheet.SetName(str1);
36.
for
(i=0;i<wssMysheets.GetCount()-1;i++){
37.
//此地方该显示时缺少两项
38.
wsMysheet = wsMysheet.GetNext();
39.
str1.Format(
"第%d页"
,i+2);
40.
wsMysheet.SetName(str1);
41.
}
42.
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(
"第1页"
)),
true
);
43.
//得到全部Cells,此时,rgMyRge是cells的集合
44.
rgMyRge.AttachDispatch(wsMysheet.GetCells(),
true
);
45.
//设置1行1列的单元的值
46.
CString str=_TEXT(
"21:12"
);
47.
rgMyRge.SetItem(_variant_t((
long
)7),_variant_t((
long
)3),_variant_t(str));
48.
rgMyRge.SetItem(_variant_t((
long
)9),_variant_t((
long
)3),_variant_t(str));
49.
rgMyRge.SetItem(_variant_t((
long
)7),_variant_t((
long
)4),_variant_t(str));
50.
rgMyRge.SetItem(_variant_t((
long
)8),_variant_t((
long
)4),_variant_t(str));
51.
rgMyRge.SetItem(_variant_t((
long
)9),_variant_t((
long
)4),_variant_t(str));
52.
rgMyRge.SetItem(_variant_t((
long
)10),_variant_t((
long
)4),_variant_t(str));
53.
rgMyRge.SetItem(_variant_t((
long
)11),_variant_t((
long
)4),_variant_t(str));
54.
rgMyRge.SetItem(_variant_t((
long
)12),_variant_t((
long
)4),_variant_t(str));
55.
//将表格保存
56.
strPath = path;
57.
strPath +=
"\\ylhexcel.xls"
;
58.
wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,
59.
vtMissing,vtMissing,vtMissing,vtMissing);
60.
ExcelApp.SetVisible(
true
);
61.
wbMyBook.PrintPreview(_variant_t(
false
));
62.
//释放对象
63.
rgMyRge.ReleaseDispatch();
64.
wsMysheet.ReleaseDispatch();
65.
wssMysheets.ReleaseDispatch();
66.
wbMyBook.ReleaseDispatch();
67.
wbsMyBooks.ReleaseDispatch();
68.
ExcelApp.ReleaseDispatch();
69.
}
- VC中调用EXECL模板生成报表
- VC中调用EXECL模板生成报表
- VC中调用EXECL模板生成报表
- VC中调用EXECL模板生成报表
- VC中调用EXECL模板生成新的Excel文档
- Jsp页面调用Jasperreport报表模板生成pdf、excel、html
- java execl报表导出
- xpage中报表生成
- VC利用EXCEL模板实现报表打印
- 在VC中调用fortran生成的dll
- 用POI加载模板生成excel报表
- word模板生成word报表文档
- 使用ireport生成jasperreport报表模板
- 基于Word模板的快速报表生成
- VC 操作Execl总结
- MFC/VC++调用word进行报表制作
- MFC/VC++调用word进行报表制作
- asp.net中利用XML描述文件和Excel模板相结合的方法生成Excel报表
- kamlloc与vamlloc
- Android开发环境搭建全程演示(jdk+eclip+android sdk)
- chain.doFilter(request, response)的简单介绍
- 云存储——易扑网
- Compression
- VC中调用EXECL模板生成报表
- [2013.05.14]ALOHA与抢数游戏
- poj 1637 Sightseeing tour
- Asp.net导出excel时长数字被科学计数法的解决方案。(身份证长数字作为字符处理)
- 云存储——Megaupload
- linux爱好者之基础篇--文件命令详解
- 用matlab,mex, gsl进行Spike Train Analysis Toolkit实装的做法
- 分秒钟做款App:细数国内外在线DIY应用网站
- HDU 1756 判断点在多边形内外