MFC操作读取excel文件
操作Excel文件初始化:
a. project->add class->MFC class from typelib (项目->添加类->Typelib中的MFC类)导入Excel.exe,一般都在C:/Program Files/Microsoft Office/Office12路径下(即选择你的office安装路径下的excel.exe加入)
b. 选中以下几项_Application,_WorkSheet,_WorkBook,WorkSheets,WorkBooks,Range,然后导入;
c. 导入后自动在工程中添加CApplication,CWorkSheet,CWorkBook,CWorkSheets,CWorkBooks,CRange这些类;
然后需要把这些类的头文件中的第一句话 #import ".......EXCEL.EXE" nonamespace 删除;
引入之后如果编译遇到错误,Not enough actual parameters for macro 'DialogBoxW'.
解决方法是在CRange类中,
VARIANT DialogBox()
{
VARIANT result;
InvokeHelper(0xf5, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
return result;
}
DialogBox()前面添加下划线变成_DialogBox(),解决了!
3.操作excel文件
在“资源”里面选择MFC自动建立的对话框,双击“打开”按钮(若没有就自己做一个),然后程序会将你到对这个按钮的函数里,在函数中写如下内容: (文件是CxxxDlg.cpp xxx是你的项目名称)
在这个文件的前端记得加入:
#include "CApplication.h"
#include "CRange.h"
#include "CWorkbook.h"
#include "CWorkbooks.h"
#include "CWorksheet.h"
#include "CWorksheets.h"
void Cexcel打开3Dlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CApplication app;
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range;
CRange iCell;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!app.CreateDispatch(L"Excel.Application"))
{
AfxMessageBox(L"无法启动Excel服务器!");
return;
}
books.AttachDispatch(app.get_Workbooks());
lpDisp = books.Open(“d://test.xls”,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional,covOptional);
//得到Workbook
book.AttachDispatch(lpDisp);
//得到Worksheets
sheets.AttachDispatch(book.get_Worksheets());
//得到当前活跃sheet
//如果有单元格正处于编辑状态中,此操作不能返回,会一直等待
lpDisp=book.get_ActiveSheet();
sheet.AttachDispatch(lpDisp);
//读取第一个单元格的值
range.AttachDispatch(sheet.get_Cells());
range.AttachDispatch(range.get_Item (COleVariant((long)2),COleVariant((long)1)).pdispVal );
/*COleVariant*/ vResult =range.get_Value2();
CString str;
if(vResult.vt == VT_BSTR) //字符串
{
str=vResult.bstrVal;
}
else if (vResult.vt==VT_R8) //8字节的数字
{
str.Format(L"%f",vResult.dblVal);
}
/*else if(vResult.vt==VT_DATE) //时间格式
{
SYSTEMTIME st;
VariantTimeToSystemTime(&vResult.date, &st);
}
else if(vResult.vt==VT_EMPTY) //单元格空的
{
str="";
}*/
books.Close();
app.Quit(); // 退出
//释放对象
range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
app.ReleaseDispatch();
OnOK();
MessageBox(str);
}
开始有一个教程没有如下代码(上一个代码框已包含)
这样会导致程序在关闭以后仍然有excel的进程存在,文件不关闭,使用以上代码后解决。
运行结果是,程序会将d:/test.xls打开,并且在对话框中输入格(1,1)的数据。
转载于:https://www.cnblogs.com/xiao0913/p/6196759.html
MFC操作读取excel文件相关推荐
- VS2008环境使用MFC操作读取excel文件
踏破铁鞋无觅处,得来费死了工夫. 本文章的引用来源,本人综合而成. http://blog.csdn.net/chasemylov/archive/2010/08/27/5844826.aspx ht ...
- python read_excel 参数_详解pandas库pd.read_excel操作读取excel文件参数整理与实例
详解pandas库pd.read_excel操作读取excel文件参数整理与实例 来源:中文源码网 浏览: 次 日期:2019年11月5日 详解pandas库pd.read_excel操作 ...
- python read_excel header_详解pandas库pd.read_excel操作读取excel文件参数整理与实例
除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作:且pandas操作更加简介方便. 首先是pd.read_excel的参数:函数为: pd. ...
- 【python】pandas库pd.read_excel操作读取excel文件参数整理与实例
除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作:且pandas操作更加简介方便. 首先是pd.read_excel的参数:函数为: pd. ...
- 关于MFC中读取EXCEL文件的操作
转自:点击打开链接 .h文件的源码代码如下: 其中的头文件都是OLE的头文件.如何导出可以参考 http://blog.csdn.net/wyz365889/article/details/75999 ...
- MFC读取Excel文件+数据处理+写入Excel
在日常编程的过程中,我们经常会遇到需要读写文件的操作,当然,最好的选择是数据库来进行读写,但是由于数据库使用环境的要求(比如某些数据库要求必须安装数据库软件后才能使用),同时,要进行数据库操作需要对S ...
- python读取excelsheet-python实现读取excel文件中所有sheet操作示例
本文实例讲述了python实现读取excel文件中所有sheet操作.分享给大家供大家参考,具体如下: 表格是这样的 实现把此文件所有sheet中 标识为1 的行,取出来,存入一个字典.所有行组成一个 ...
- python3读写excel文件_python3 循环读取excel文件并写入json操作
文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data ...
- python循环读取excel存入列表_python3 循环读取excel文件并写入json操作
文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data ...
- python 读excel中的sheet_python实现读取excel文件中所有sheet操作示例
本文实例讲述了python实现读取excel文件中所有sheet操作.分享给大家供大家参考,具体如下: 表格是这样的 实现把此文件所有sheet中 标识为1 的行,取出来,存入一个字典.所有行组成一个 ...
最新文章
- C++11 :STL中的 iota ()函数
- 瞎聊Spring Cloud
- linux中deb怎样安装
- 高级数据结构与算法 | B树、B+树、B*树
- pythondistutils安装_安装msi后的python distutils
- asynchttpclient 超时_dnf这才是混子的毕业套装,却发现超时空漩涡不买账!
- css-样式重构-代码分享
- Linux 统计代码行数
- python的内置函数 剖析
- mysql截取小数点后4位_MySQL 截取小数位数
- js函数中变量声明提前
- 7zip压缩zip格式时文件名支持中文的设置
- javascript函数传参
- UEFI安装win10+manjaro双系统
- 单片机的ISP是什么
- Unity接TalkingData自动集成XCode
- 【前端技术】一篇文章搞掂:CSS
- 使用python对股票数据分析预测
- 为什么靠谱的老板,不会要求员工忠诚?
- 连接mysql数据库有几种方式_数据库连接的几种常用方式
热门文章
- 携程App的网络性能优化实践
- 为什么在Linux执行自己的程序要在前面加./
- 西部数据暂停与华为的合作关系及发货
- 台湾台积电为华为两肋插刀,扛住压力,单日损失1426亿元
- Python之父再度发声:我们能为中国的“996”程序员做什么?
- 科技圈晒开工福利!小米最直接,腾讯最传统,阿里最豪气,你们家的呢?
- python基础之python介绍
- Failed to start OpenLDAP Server Daemon
- A Beginner's Guide To Understanding Convolutional Neural Networks Part One (CNN)笔记
- CentOS7使用yum安装mysql5.7