MFC操作excel

这篇具有很好参考价值的文章主要介绍了MFC操作excel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

步骤:

  1. 安装microsoft的excel软件,因为只有ms的excel软件才提供了有关的类库

  2. 选中工程,添加类→MFC→Typelib中的MFC类

  3. 选中类库, 在可用类类型库中选择Microsoft Excel Object Library(据版本有可能细微之不同)

  4. 添加需要使用的接口,根据网上大部分人的说法和能满足我需要的类就只有5个类CApplication, CWorkBook, CWorkSheet, CWorkBooks, CWorkSheets, CRange,选择接口时分别是_Application, _WorkBook, _WorkSheet, Range, WorkBooks, WorkSheets,选择好后点确定,就会多5个头文件,删除每个头文件里面的开头的“#import “C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE” no_namespace”,不删除则会有莫名其妙编译错误文章来源地址https://www.toymoban.com/news/detail-602625.html

//加载xls
	HRESULT hr;     //HRESULT函数返回值
	hr = CoInitialize(NULL);  //CoInitialize用来告诉 Windows以单线程的方式创建com对象
	if (FAILED(hr))
	{
		AfxMessageBox(_T("Failed to call Coinitialize()"));
	}
	

	CFileDialog  fd(true, "*.xls", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Xls文件 (*.xls)|*.xls|csv文件 (*.csv)|*.csv|All Files (*.*)|*.*||",this);
	fd.m_ofn.lpstrTitle = "打开文件";
	CString strFilePath;
	if (IDOK == fd.DoModal())
	{
		strFilePath = fd.GetPathName();
	}
	else
	{
		return;
	}
 
	CApplication app1;
	CWorkbooks books;
	CWorkbook book;
	CWorksheets sheets;
	CWorksheet sheet;
	CRange range;
	CRange iCell;
	LPDISPATCH lpDisp;
	COleVariant vResult;  //COleVariant类是对VARIANT结构的封装
	COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
	if (!app1.CreateDispatch(_T("Excel.Application"), NULL))
	{
		AfxMessageBox(_T("无法启动Excel服务器!"));
		return;
	}
	books.AttachDispatch(app1.get_Workbooks());
	lpDisp = books.Open(strFilePath, 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 = sheets.get_Item(COleVariant((short)1));
	//得到当前活跃sheet 
	//如果有单元格正处于编辑状态中,此操作不能返回,会一直等待 
	lpDisp = book.get_ActiveSheet();
	sheet.AttachDispatch(lpDisp);



	int counts = 0;
	for(int i =1;i<200;i++){
		range.AttachDispatch(sheet.get_Cells());
		range.AttachDispatch(range.get_Item(COleVariant((long)i), COleVariant((long)1)).pdispVal);
		vResult = range.get_Value2();
		CString str;
		if (vResult.vt == VT_BSTR) //字符串  
		{
			str = vResult.bstrVal;
		}
		else if (vResult.vt == VT_R8) //8字节的数字  
		{
			str.Format(_T("%f"), vResult.dblVal);
		}else{
			str =" ";
		}
		locationlist.InsertItem(locationlist.GetItemCount(),str);
		
		for(int j = 1;j<7;j++){
			range.AttachDispatch(sheet.get_Cells());
			range.AttachDispatch(range.get_Item(COleVariant((long)i), COleVariant((long)j+1)).pdispVal); //第一变量是行,第二个变量是列,即第二行第一列
			vResult = range.get_Value2();
			CString str;
			if (vResult.vt == VT_BSTR) //字符串  
			{
				str = vResult.bstrVal;
			}
			else if (vResult.vt == VT_R8) //数字  
			{
				str.Format(_T("%f"), vResult.dblVal);
			}else {
			
				str = " ";
				if(j==5){
					return;
				}
			}

			
			locationlist.SetItemText(locationlist.GetItemCount()-1,j,str);
		}
	
	
	}

	UpdateData(false);

	
	books.Close();
	app1.Quit(); 
	//释放对象      
	range.ReleaseDispatch();
	sheet.ReleaseDispatch();
	sheets.ReleaseDispatch();
	book.ReleaseDispatch();
	books.ReleaseDispatch();
	app1.ReleaseDispatch();

到了这里,关于MFC操作excel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MFC自定义控件ID操作————MFC+Halcon学习中的那些坑

    趁着大三寒假抓紧学习halcon与mfc,为未来职业发展做准备,今天和大家分享一个我在学习mfc与halcon过程中踩到的坑,足足困扰了我半天.... 程序很简单..就是在halcon中读取摄像头,并且用mfc开发一个简单的界面,将视频显示出来,完成体内容如下 发现这个图片控件的ID有些奇怪

    2024年02月05日
    浏览(27)
  • MFC文件操作

     MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘输入输出功能。通过他的派生类可以间接的支持文本、文件、内存文件等。 通过对CFile类的初始化,即可完成文件的打开 CFile类的其中一个构造函数: 参数 lpszFileName     表示文件名 参数

    2024年02月04日
    浏览(27)
  • 找不到mfc140u.dll或者Microsoft Visual C++ 2017 Redistributable一直安装失败解决

    安装后提示这个问题,我将xshell卸载重新安装后发现安装过程中提示Microsoft Visual C++ 2017 Redistributable一直安装失败,所以问题出在Microsoft Visual C++ 2017 Redistributable上 首先查看日志文件 说明有更高的版本 控制面板–》卸载程序 发现比自己版本高的,卸载掉 下载Microsoft Visual C

    2024年02月12日
    浏览(36)
  • 解决Windows丢失mfc71.dll问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个mfc71.dll文件进行安装(前提是找到适合的版本),当我们执行某

    2024年02月05日
    浏览(35)
  • MFC删除Button控件具体操作

    删除Button按键; 删除xxxDlg.h中消息映射函数定义 删除xxxDlg.cpp中“DoDataExchange”和“BEGIN_MESSAGE_MAP”中的相关代码 删除xxxDlg.cpp中按键响应函数

    2024年02月09日
    浏览(29)
  • Windows找不到mfc71.dll解决方法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个mfc71.dll文件进行安装(前提是找到适合的版本),当我们执行某

    2024年02月09日
    浏览(57)
  • Windows丢失mfc100.dll文件解决方法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个mfc100.dll文件进行安装(前提是找到适合的版本),当我们执行某

    2024年02月03日
    浏览(39)
  • MFC中对编码文件的操作01

    (1)、创建单例类 (2)、查找CFileFind类 这个类用于查找指定根目录下面的文件和文件夹,或者特定的文件。 1)、FindFile 函数会返回一个BOOL值,如果为1说明当前路径下还有文件或文件夹。参数是你指定的目录。 2)、FindNextFile函数,无参数,查找下一个文件或者文件夹。

    2024年02月22日
    浏览(34)
  • Windows中mfc120.dll缺少的解决方法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个mfc120.dll文件进行安装(前提是找到适合的版本),当我们执行某

    2024年02月05日
    浏览(41)
  • 解决Windows提示缺少mfc110.dll文件错误

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个mfc110.dll文件进行安装(前提是找到适合的版本),当我们执行某

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包