用CreateDispatch("Excel.Application")失败不知为何?
转载:
首先利用Visual C++ 60,建立一个MFC基于对话框的工程项目,共享DLL,Win32平台。工程名称ExcelTest。在主对话框中加入一个按钮,
ID IDC_EXCELTEST
Caption Test Excel
双击该按钮,增加成员函数void CExcelTestDlg::OnExceltest()。
在BOOL CExcelTestApp::InitInstance()中,dlgDoModal();之前增加代码:
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持库失败!");
exit(1);
}
在return FALSE; 语句前,加入:
CoUninitialize();
选择Menu->View->ClassWizade,打开ClassWizade窗口,选择Add Class->From a type library,选择D:\Program Files\Microsoft Office\office\Excel9OLB(D:\Program Files\Microsoft Office\是本机上Microsoft Office 2000的安装目录,可根据个人机器上的实际安装目录修改)。选择_Application、Workbooks、_Workbook、 Worksheets、_Worksheet、Range,加入新类,分别为_Application、Workbooks、_Workbook、 Worksheets、_Worksheet、Range,头文件Excel9h,源文件Excel9cpp。
在ExcelTestDlgcpp文件的头部,#include "ExcelTestDlgh"语句之下,增加 :
#include "comdefh"
#include "Excel9h"
在void CExcelTestDlg::OnExceltest() 函数中增加如下代码:
void CExcelTestDlg::OnExceltest()
{
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
//创建Excel 2000服务器(启动Excel)
if (!ExcelAppCreateDispatch("ExcelApplication",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
//利用模板文件建立新文档
wbsMyBooksAttachDispatch(ExcelAppGetWorkbooks(),true);
wbMyBookAttachDispatch(wbsMyBooksAdd(_variant_t("g:\\exceltest\\MyTemplatexlt")));
//得到Worksheets
wssMysheetsAttachDispatch(wbMyBookGetWorksheets(),true);
//得到sheet1
wsMysheetAttachDispatch(wssMysheetsGetItem(_variant_t("sheet1")),true);
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRgeAttachDispatch(wsMysheetGetCells(),true);
//设置1行1列的单元的值
rgMyRgeSetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("This Is A Excel Test Program!"));
//得到所有的列
rgMyRgeAttachDispatch(wsMysheetGetColumns(),true);
//得到第一列
rgMyRgeAttachDispatch(rgMyRgeGetItem(_variant_t((long)1),vtMissing)pdispVal,true);
//设置列宽
rgMyRgeSetColumnWidth(_variant_t((long)200));
//调用模板中预先存放的宏
ExcelAppRun(_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);
//打印预览
wbMyBookSetSaved(true);
ExcelAppSetVisible(true);
wbMyBookPrintPreview(_variant_t(false));
//释放对象
rgMyRgeReleaseDispatch();
wsMysheetReleaseDispatch();
wssMysheetsReleaseDispatch();
wbMyBookReleaseDispatch();
wbsMyBooksReleaseDispatch();
ExcelAppReleaseDispatch();
}
可能原因与解决办法: 首先看一下机子与其它能导出数据的机子安装的EXCEL版本是否一样。如果说一样就不是这方面的问题。 检查这台机子D盘下的FAWDZ的文件包是否是已存在,(一定是由服务器新复制的)没有这个文件包要重新由服务器新复制。
可能是你操作的问题,具体如下:
1、这个一般是SQL数据库和EXCEL版本的问题,EXCEL最好是2003版,且是完全版,有些精简版等其版本功能或组件不全。(这个可能性最大)。
2、SQL版本太高,换个低版本试试。
3、系统组件不全,换个版本的系统。
在App的InitInstance()函数中添加
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持库失败!");
exit(1);
}
你这个错误很明显了,如果互和通用Excel服务器和互和通用Excel客户端电脑的网络都正常,那你就检查一下互和通用Excel服务器的IIS是否有开启,
出现此错误提示,最常见的原因有:
1服务器所在的端口被占用;
2系统所依存的 IIS 服务被停止;
3网络故障。
解决方法:
请先检查网络是否正常;
如果网络正常,再检查 IIS 是否正处于运行状态;
扫描系统端口有没有被其他程序占用。
多数情况都是因为 IIS 被恶意停止所造成的。互和科技工程师建议定时检查服务器的安全状态,如发现有恶意插件或恶意软件,立即清理。
ole server not found:服务器登陆失败。
解决办法:
开始--运行 输入 regsvr32 scrrundll 就可以了。
另外:
1。有些脚本需要微软的 MSXML 控件才能进入。当使用 IE 5 以上版本的缺省安全模式时,会提示是否接受 MSXML 控件,如果接受,MSXML 将自动安装到您的机器上(得等上几分钟)。如果自动安装不成功,可以自行下载和安装 MSXML 30。
2。如果安装 MSXML 3 后仍然出现 'Automation 服务器不能创建对象' 错误,是因为您的机器禁止了所有的 ActiveX, 一般将 IE 的安全模式设为“中”即可。
0条评论