用CreateDispatch("Excel.Application")失败不知为何?

用CreateDispatch("Excel.Application")失败不知为何?,第1张

转载:

首先利用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 的安全模式设为“中”即可。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 用CreateDispatch("Excel.Application")失败不知为何?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情