vc操作excel
2014-04-04 11:46
302 查看
1。在view-classwizad-autometion中点击add class-from a type library,选择execl。exe(office2003)。
2。从列表中选取_Application/_Workbook/_WorkSheet/Range/Workbooks/Worksheets 6项,确定,工程目录下会加入excel.cpp和excel.h。
3。在你的某个。h文件中添加excel相关变量,也可以直接在函数里定义:
_Application ExcelApp; //Excell 表格操作所需要的变量
Workbooks wbsMybooks;
_Workbook wbMyBook;
Worksheets wssMySheets;
_Worksheet wsMySheet;
Range MyRange;
4。为你的某个按钮单击事件添加如下代码:
void CExceltestDlg::OnOK()
{
CoUninitialize();
if(CoInitialize(NULL) != 0)
{
AfxMessageBox("初始化COM支持库失败!");
}
//启动Excell
if(!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excell服务失败!");
exit(1);
}
ExcelApp.SetVisible(FALSE);
//利用模板文件建立新文档
CString strPath;
CString strPath1;
GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));//获取当前路径
strPath1.Format("%s//11.xls",strPath);//要操作的excel表的名字
wbsMybooks.AttachDispatch(ExcelApp.GetWorkbooks(),TRUE);
wbMyBook.AttachDispatch(wbsMybooks.Add(_variant_t(strPath1)));
wssMySheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
wsMySheet.AttachDispatch(wssMySheets.GetItem(_variant_t("sheet1")),TRUE);
MyRange.AttachDispatch(wsMySheet.GetCells(),true);
int row = 2;
CString sMsg;
ExcelToString(row, 1, sMsg); //读取row行1列的数据至sMsg中
CDialog::OnOK();
}
void CExceltestDlg::ExcelToString(int row, int col, CString& sMsg)
{
VARIANT vMsg;
char cMsg[512];
vMsg = MyRange.GetItem(_variant_t((long)row),_variant_t((long)col));
_bstr_t bMsg = (_bstr_t)vMsg;
strcpy(cMsg,bMsg);
sMsg = cMsg;
}
昨天忘了说明一点,_variant_t类型需要包含下面这个头文件才能识别:
#include <comdef.h>
2。从列表中选取_Application/_Workbook/_WorkSheet/Range/Workbooks/Worksheets 6项,确定,工程目录下会加入excel.cpp和excel.h。
3。在你的某个。h文件中添加excel相关变量,也可以直接在函数里定义:
_Application ExcelApp; //Excell 表格操作所需要的变量
Workbooks wbsMybooks;
_Workbook wbMyBook;
Worksheets wssMySheets;
_Worksheet wsMySheet;
Range MyRange;
4。为你的某个按钮单击事件添加如下代码:
void CExceltestDlg::OnOK()
{
CoUninitialize();
if(CoInitialize(NULL) != 0)
{
AfxMessageBox("初始化COM支持库失败!");
}
//启动Excell
if(!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excell服务失败!");
exit(1);
}
ExcelApp.SetVisible(FALSE);
//利用模板文件建立新文档
CString strPath;
CString strPath1;
GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));//获取当前路径
strPath1.Format("%s//11.xls",strPath);//要操作的excel表的名字
wbsMybooks.AttachDispatch(ExcelApp.GetWorkbooks(),TRUE);
wbMyBook.AttachDispatch(wbsMybooks.Add(_variant_t(strPath1)));
wssMySheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
wsMySheet.AttachDispatch(wssMySheets.GetItem(_variant_t("sheet1")),TRUE);
MyRange.AttachDispatch(wsMySheet.GetCells(),true);
int row = 2;
CString sMsg;
ExcelToString(row, 1, sMsg); //读取row行1列的数据至sMsg中
CDialog::OnOK();
}
void CExceltestDlg::ExcelToString(int row, int col, CString& sMsg)
{
VARIANT vMsg;
char cMsg[512];
vMsg = MyRange.GetItem(_variant_t((long)row),_variant_t((long)col));
_bstr_t bMsg = (_bstr_t)vMsg;
strcpy(cMsg,bMsg);
sMsg = cMsg;
}
昨天忘了说明一点,_variant_t类型需要包含下面这个头文件才能识别:
#include <comdef.h>
相关文章推荐
- 通达OA 升级到2013版的一些变化
- 基本排序算法实现
- Spring.net step by step——依赖注入(DI)和控制反转(IOC)
- 学习笔记 --- LINUX 应用调试之使用strace命令追踪系统调用
- eclipse导入myeclipse的web项目没法识别问题解决
- OV9712 CMOS基于JZ4775调试(二)
- 程序流程设计方法
- 使用redis做pv、uv、click统计
- 用activity打开系统浏览器
- ListCtrl设置ToolTip
- ARM Linux教程之四:安装交叉编译环境
- SharedPreferences使用
- OV9712 CMOS基于JZ4775调试(一)
- CentOS-6.3安装配置apache-tomcat-7.0.53.tar.gz
- 背景
- Iptables脚本篇之Iptables Host Server Online.sh
- Oracle客户端工具
- C#自动添加using引用命名空间
- 为iOS 7而开发 并支持iOS 6
- 【HEVC】目前H265分析软件推荐