运行时点击控件,提示”创建Excel服务失败“,有人能帮助小弟我解决这个有关问题吗
运行时点击控件,提示”创建Excel服务失败“,有人能帮助我解决这个问题吗 ?
步骤:
对话框里面新建一个控件,给控件编写如下代码:运行时点击控件,提示”创建Excel服务失败“,有人能帮助我解决这个问题吗 ?
void CTestDlg::OnExport()
{
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
//创建Excel 2003服务器(启动Excel)
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
//利用模板文件建立新文档
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("E:\\doc\\MyTemplate.xlt")));
//得到Worksheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
//得到sheet1
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
//设置1行1列的单元的值
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("企业号"));
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)2),_variant_t("trap地址"));
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)3),_variant_t("trap产生时间"));
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)4),_variant_t("trap类型"));
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)5),_variant_t("扩张trap类型"));
//得到所有的列
rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true);
//得到第一列
rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
//设置列宽
rgMyRge.SetColumnWidth(_variant_t((long)10));
//const struct tagVARIANT p;
//调用模板中预先存放的宏 ,_variant_t("CopyRow")
/*
ExcelApp.Run(_variant_t("CopyRow"),_variant_t((long)10),vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
*/
//打印预览
wbMyBook.SetSaved(true);
ExcelApp.SetVisible(true);
wbMyBook.PrintPreview(_variant_t(false));
//释放对象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
}
谢谢大家了,本人急用,希望可以又解决的办法,如果有用会多多贴分的,
------解决方案--------------------
这个帖子我好像回过一边
在InitInstance里调用CoInitialize试试
当然你要确定你机器上有excel
步骤:
对话框里面新建一个控件,给控件编写如下代码:运行时点击控件,提示”创建Excel服务失败“,有人能帮助我解决这个问题吗 ?
void CTestDlg::OnExport()
{
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
//创建Excel 2003服务器(启动Excel)
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
//利用模板文件建立新文档
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("E:\\doc\\MyTemplate.xlt")));
//得到Worksheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
//得到sheet1
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
//设置1行1列的单元的值
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("企业号"));
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)2),_variant_t("trap地址"));
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)3),_variant_t("trap产生时间"));
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)4),_variant_t("trap类型"));
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)5),_variant_t("扩张trap类型"));
//得到所有的列
rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true);
//得到第一列
rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
//设置列宽
rgMyRge.SetColumnWidth(_variant_t((long)10));
//const struct tagVARIANT p;
//调用模板中预先存放的宏 ,_variant_t("CopyRow")
/*
ExcelApp.Run(_variant_t("CopyRow"),_variant_t((long)10),vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
*/
//打印预览
wbMyBook.SetSaved(true);
ExcelApp.SetVisible(true);
wbMyBook.PrintPreview(_variant_t(false));
//释放对象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
}
谢谢大家了,本人急用,希望可以又解决的办法,如果有用会多多贴分的,
------解决方案--------------------
这个帖子我好像回过一边
在InitInstance里调用CoInitialize试试
当然你要确定你机器上有excel