VS2017,MFC对WPS下Excel表格的操作

1、添加Excel类库

1、在菜单栏的“项目”->“添加新项目”->MFC下的Type Liabrary  选择 mircosoft  excel....可看到对应的dll文件路径,从文件夹中添加。
主要用到以下几个类:_Application:表示整个的Excel应用程序,包含一个工作簿集合Workbooks:工作簿集合,包含N个工作簿(Workbook)_Workbook:工作簿,包含一个工作表(sheets)集合Worksheets:工作表集合,包含N个工作表_Worksheet:工作表,也就是我们在Excel中看到的Sheet1、Sheet2、Sheet3,它是我们操作Excel的基本单位Range:这是单元格的集合,我们知道Excel是由一个个的单元格组成的,通过Range来操作单元格Font:用于设置单元格的字体、颜色、字号、粗体设置Interior:设置底色Boards:设置区域内所有单元格的边框,如果要设置一组区域的外边框的话用Rang->BorderAround设置下面举个我自己的例子进行说明

2、COM库初始化

 通常在App的InitInstance()里面加入初始化和关闭COM库的操作,在DoModal()调用之前加入初始化的代码:if (!AfxOleInit()){AfxMessageBox(_T("注册COM出错!"));return FALSE;}

3、Excel.tlh报大量错误

因为加载的类与vs本身自带的起了冲突。解决办法:
1,注释掉每个头文件的
#import “C:\Program Files\Microsoft Office\Office12\EXCEL.EXE” no_namespace,

2,在添加的头文件中每个里面都加入#include<afxdisp.h>

3,然后在CRange.h中的 VARIANT DialogBox() 改成 VARIANT _DialogBox()

4.在stdafx.h文件中,添加

    #include "CApplication.h"  #include "CRange.h"  #include "CWorkbook.h"  #include "CWorkbooks.h"  #include "CWorksheet.h"  #include "CWorksheets.h"  #include"CFont0.h"#include"Cnterior.h"#include"CBorder.h"

4、代码演示一些操作

在.h中定义一些全局变量。

CApplication app;
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range;
LPDISPATCH lpDisp;
COleVariant vResult;CString str = _T("");

在*dlg.cpp文件中进行操作

打开Excel表格,进行一系列对象的初始化:

void CFirstWorkDlg::OpenExcel(CString szFileName,INT iSheet)
{if (!app.CreateDispatch(_T("Excel.Application"), NULL)){AfxMessageBox(_T("Create Excel service failure!"));return;}// 设置为FALSE时,后面的app.Quit();注释要打开  // 否则EXCEL.EXE进程会一直存在,并且每操作一次就会多开一个进程  app.put_Visible(FALSE);books.AttachDispatch(app.get_Workbooks(), true);/**   打开一个工作簿。*   Excel 2000 只需要13个参数就行,Excel 2003需要15个参数*/lpDisp = books.Open(szFileName,covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional,covOptional, covOptional);ASSERT(lpDisp);book.AttachDispatch(lpDisp);// 得到Worksheets    sheets.AttachDispatch(book.get_Worksheets(), true);// 得到Worksheet  sheet.AttachDispatch(sheets.get_Item(_variant_t(iSheet)));// 得到全部Cells   //range.AttachDispatch(sheet.get_Cells(), true);
}

按钮单击事件函数,读取Excel表格内容并放到ListControl控件中

 void CFirstWorkDlg::OnBnClickedRead()
{CFileDialog fileDlg(TRUE, _T("(*.xls)|*.xls"), NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("Material File(*.xls)|*.xls||"), this);CString szFileName;if (fileDlg.DoModal() == IDOK){szFileName = fileDlg.GetPathName();}//CString szFileName = _T("C:\\Users\\Administrator\\Desktop\\ENGDATA.xls");INT iSheet = 1;OpenExcel(szFileName,iSheet);m_list.DeleteAllItems();CRange oCurSel;range.AttachDispatch(sheet.get_UsedRange());range.AttachDispatch(range.get_Rows());long row = range.get_Count();range.AttachDispatch(range.get_Columns());long col = range.get_Count();range.AttachDispatch(sheet.get_Cells(), true);for (int i = 1; i <= row; ++i){for (int j = 1; j <= col; ++j){oCurSel.AttachDispatch(range.get_Item(_variant_t((long)i), _variant_t((long)j)).pdispVal);vResult = oCurSel.get_Text();//VARIANT res = oCurSel.get_Text();//CString strRes = res.bstrVal;str = vResult.bstrVal;if (1 == i)m_list.InsertColumn(j-1, str, LVCFMT_CENTER, 100, -1);else if (1 == j)m_list.InsertItem(i-2, str);elsem_list.SetItemText(i-2,j-1, str);/*switch (vResult.vt){case VT_BSTR:       // 字符串  str = vResult.bstrVal;break;case VT_R8:         // 8字节的数字  str.Format(_T("%f"), vResult.dblVal);break;case VT_DATE:       // 时间格式  SYSTEMTIME st;VariantTimeToSystemTime(vResult.date, &st);break;case VT_EMPTY:      // 单元格空的  str = "";break;}*/}}CloseExcel();
}

释放对象。

 void CFirstWorkDlg::CloseExcel(){// book.Save();                    // 保存Excel的内容  //  app.put_DisplayAlerts(true);    // 弹出对话框询问是否保存  app.Quit();                     // 退出  //释放对象    range.ReleaseDispatch(); sheet.ReleaseDispatch();sheets.ReleaseDispatch();book.ReleaseDispatch();books.ReleaseDispatch();app.ReleaseDispatch();}

5、其他对Excel表格的操作可参考另一位仁兄的博客

https://blog.csdn.net/mars_xiaolei/article/details/79077480

上面就是一些对于Excel的基本操作,如果有什么问题希望大家能够指出!

VS2017,MFC对WPS下Excel表格的操作相关推荐

  1. 文件服务器 excle 变为temp,excel没保存关了【WPS的excel表格保存之后变成tmp】

    excel打开为什么会自动保存在temp文件夹里 temp文件即为临时文件它是记录我们的每一个动作的,有了它我们才能进行撤销和恢复动作,甚至突然断电情况下可以通过它恢复文件. 共享文件夹里的EXCEL ...

  2. 文件服务器 excle 变为temp,WPS的excel表格保存之后变成tmp_共享文档无法保存EXCLE 生成TMP...

    服务器上共享的EXCEL文件被访问后生成TMP 文件 ,如何解决?求高手.EXCEL-选项-保存也设置过了 没有用! 法一:首先禁用你服务器上的杀软,看看还会不会造成该情况?若没有,说明你杀软哪个没选 ...

  3. 计算机表格a列除b列,win10系统下EXCEL表格A列B列C列消失了怎么办

    windows10系统下EXCEL表格A列B列C列消失了怎么办?近来不少用户都向小编咨询了这个问题.其实,问题解决起来并不难.接下来,系统城小编就要给大家介绍下具体操作步骤! 具体如下: 1.用鼠标选 ...

  4. xp系统打不开excel服务器,xp系统下excel表格链接无法点击的解决方法

    在使用excel表格过程中,发现表格中的很多网址链接都无法点击打开.那么,我们该如何将其改成可点击的网址链接,方便快捷的打开网址?接下来,小编就以windowsxp系统为例,给大家分享excel表格链 ...

  5. html链接打开excel,龙三公子博客-win7/10下excel表格中的文本链接如何变成可点击打开的网址链接(超链接)后又提示可打开此文件的应用程序没有注册?...

    如题,win7/10下excel表格中的文本链接如何变成可点击打开的网址链接(超链接)后又提示可打开此文件的应用程序没有注册怎么解决?很长,但是分解下其实就不难解决了. 两个问题:一是文本链接如何变成 ...

  6. (WPS)Excel表格中批量删除指定字符

    (WPS)Excel表格中批量删除指定字符 打开excel表格,选中需要删除的指定行或列的数据,键盘选择快捷键ctrl+H, ![比如要删除的字符是 ' ' 鼠标点击"全部替换", ...

  7. VC实现对Excel表格的操作

    转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html 通过VC实现对Excel表格的操作的方法有多种, ...

  8. Java对Excel表格的操作

    Java对Excel表格的操作 目前软件开发多采用B/S架构.正B/S架构可以给软件的开发部署带来很大的便利,但是与此同时这种架构也带来了一些问题,例如Web报表的处理等,在B/S架构下,客户端的开发 ...

  9. python使用xlsx和pandas处理Excel表格的操作步骤

    python的神器pandas库就可以非常方便地处理excel,csv,矩阵,表格 等数据,下面这篇文章主要给大家介绍了关于python使用xlsx和pandas处理Excel表格的操作步骤,文中通过 ...

最新文章

  1. 在ubuntu 14.04 64bit上安装酷我音乐盒Linux客户端kwplayer
  2. UITableView学习笔记
  3. 《Excel 职场手册:260招菜鸟变达人》一第 14 招 利用数据验证记录数据录入时间...
  4. linux 文件目录操作,Linux系统下文件与目录操作
  5. 读源码学C之阅读李恒的bioawk
  6. 谁抢走了中国男人的老婆?
  7. C语言指针:从底层原理到花式技巧,用图文和代码帮你讲解透彻
  8. openwrt首次登录密码_什么是路由器登录密码 路由器登录密码介绍【详解】
  9. 微软内核工程师:ReactOS 剽窃了 Windows 研究内核代码!
  10. 使用寻路算法写的一个小项目
  11. python实现对解析之后的DOM进行层次化处理升序输出
  12. RedHat 网络配置
  13. 【MATLAB】MATLAB 仿真 — 模拟调制系统 之 AM 调制过程
  14. jpa级联添加_jpa级联(Cascade)操作
  15. Design contains shelved or modified (but not repoured) polygons. The result of DRC is not correct.
  16. AUTOCAD——自定义特殊线型
  17. python入门(三)列表、元组、range()、字典
  18. HTML+CSS大作业: 抗击疫情网页制作作业_疫情防控网页设计模板HTML_ 简单学生网页设_静态HTML+CSS网站制作成品...
  19. 微信小程序开发 image mode属性显示图片对应的格式详解
  20. css层叠引入方式有,前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器...

热门文章

  1. html表单页面css样式代码,前端html表单与css样式(示例代码)
  2. 解决 cv_bridge 与 opencv4 版本冲突问题
  3. java中装箱和拆箱的详细使用(详解)
  4. 鼠标变成方块而不是竖线
  5. 计算机硬盘空间不足怎么删,Win10硬盘空间不足?教你这样清理,瞬间多出10个G!...
  6. TM卡 DS1990A读写程序
  7. java 如何转化成机器指令_Java代码到底是如何编译成机器指令的
  8. GPU加速(一)CUDA C编程及GPU基本知识
  9. 嵌入式Linux工程师的成长经历
  10. 个人中心(修改密码)