首先利用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();
}google出了一些。若出现"Automation
服务器不能创建对象" 的解决方法
访问某些网站的时候,如果出现"Automation
服务器不能创建对象"的错误提示框,表明网页内的对象需要scrrundll的支持,可以尝试下面的方法:
开始--运行--regsvr32
scrrundll
(不用重新安装 *** 作系统和vsnet)
有些脚本需要微软的
MSXML
控件才能进入。当使用
IE
5
以上版本的缺省安全模式时,会提示是否接受
MSXML
控件,如果接受,MSXML
将自动安装到您的机器上(得等上几分钟)。如果自动安装不成功,可以自行下载和安装
MSXML
30。
如果安装
MSXML
3
后仍然出现
'Automation
服务器不能创建对象'
错误,是因为您的机器禁止了所有的
ActiveX,
一般将
IE
的安全模式设为"中"(2000,2003均适合)即可。
javascript脚本中报这个错误是因为IE的安全设置不允许运行未标记为安全的activeX控件进行初始化和脚本运行,改为提示或启用即可。分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
我要在vc中实现将数据插入excel表,从表中查询数据,删除数据,更新数据,会的帮帮忙
解析:
我用的是excel2000
首先利用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 "defh"
#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();
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)