NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article/details/88922030 这篇博客,要不然你听不懂我下面在说什么。
版本NX11+VS2013+office2016
首先我们通过NX开发向导创建了一个模板。
先把项目属性改成多字节。
下面我们把前面做的MFC项目里的几个EXCAL头文件和stdafx一块拷过来,加到NX的项目里。
在NX的CPP里加上#include "stdafx.h"头文件
编译出现如下问题,把stdafx.h"头文件里的//#include "targetver.h"注释掉,在编译。
出现 warning C4003: “CreateDialogW”宏的实参不足,双击报错问题,跳转到对应代码位置。
把CreateDialog前加_下划线。(不要问我为什么这么做,我解释不出来),反正你在编译就通过了。同时也不当误用Block UI
到这里这个操作EXCAL的项目搭建就完事了。
去自己定义的回调函数里,直接写操作EXCAL的代码就行了。
下面是打开EXCAL,读取内容的一个简单例子。写在模板的do_it里
- LPDISPATCH lpDisp;
- COleVariant vResult;
- COleVariant
- covTrue((short)TRUE),
- covFalse((short)FALSE),
- covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
- if (!App.CreateDispatch("Excel.Application"))
- {
- uc1601("创建Excel实例失败", );
- }
- App.put_Visible(TRUE); //使Excel可见
- App.put_UserControl(TRUE);
- App.put_DisplayAlerts(false);
- Books.AttachDispatch(App.get_Workbooks());
- //打开EXCAL
- lpDisp = Books.Open("D:\\ABC.xlsx", covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional,
- covOptional, covOptional, covOptional, covOptional, covOptional, covOptional);
- Book.AttachDispatch(lpDisp);
- //得到Worksheets
- lpDisp = Book.get_Worksheets();
- sheets.AttachDispatch(lpDisp);
- //获得Sheet的数量
- int count = sheets.get_Count();
- for (int k = ; k <= count; k++)
- {
- _variant_t var = (long)k;
- sheet.AttachDispatch(sheets.get_Item(var));
- if (sheet.get_Name() == "DEF")
- {
- sheet.Activate();
- //获得活动的WorkSheet(工作表)
- sheet.AttachDispatch(Book.get_ActiveSheet(), TRUE);
- //获得使用的区域Range(区域)
- range.AttachDispatch(sheet.get_UsedRange(), TRUE);
- //获得使用的行数
- long lgUsedRowNum = ;
- range.AttachDispatch(range.get_Rows(), TRUE);
- lgUsedRowNum = range.get_Count();
- //获得使用的列数
- long lgUsedColumnNum = ;
- range.AttachDispatch(range.get_Columns(), TRUE);
- lgUsedColumnNum = range.get_Count();
- //读取Sheet名称
- CString strSheetName = sheet.get_Name();
- //得到全部Cells,此时,userRange是cells的集合
- range.AttachDispatch(sheet.get_Cells(), TRUE);
- //遍历整个Excel表格
- double Date1;
- CString str1;
- for (int j = ; j <= lgUsedRowNum; j++)
- {
- for (int i = ; i <= lgUsedColumnNum; i++)
- {
- CString str;
- str.Format("%c%d", + i - , j);
- lpDisp = range.get_Range(COleVariant(str), COleVariant(str));
- CRange range;
- range.AttachDispatch(lpDisp);
- VARIANT vl = range.get_Value2();
- if (vl.vt == VT_R8) //8字节的数字
- {
- Date1 = vl.dblVal;
- char msg[];
- sprintf_s(msg, "%f", Date1);
- uc1601(msg, );
- }
- if (vl.vt == VT_BSTR) //字符串
- {
- str1 = vl.bstrVal;
- uc1601(str1, );
- }
- }
- }
- }
- }
- //释放对象,关闭EXCEL
- //range.ReleaseDispatch();
- //sheet.ReleaseDispatch();
- //sheets.ReleaseDispatch();
- //Book.Close(covOptional, covOptional, covOptional);
- //Book.ReleaseDispatch();
- //Books.Close();
- //Books.ReleaseDispatch();
- //App.Quit();
- //App.ReleaseDispatch();
更多关于EXCAL操作代码,请大家看NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://www.cnblogs.com/nxopen2018/p/10981416.html 这篇文章,介绍的比较多。当前这个文章主要还是介绍怎么去搭建NX开发操作EXCAL的环境,用NX UI界面的项目,环境也是这样搭建的。
NX二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突【转载】
https://www.cnblogs.com/nxopen2018/p/11811708.html
NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))的更多相关文章
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- NX二次开发-使用NXOPEN C++向导模板做二次开发
版本 NX9+VS2012 1.怎么往VS软件里添加VC,C#,VB向导模板 先到NX安装目录下UGOPEN文件夹里找到这三个文件夹 拷贝到VS的安装目录下 这里有几个注意事项,VS2017,VS20 ...
- 网站实现微信登录之嵌入二维码——基于yii2开发的描述
之前写了一篇yii2获取登录前的页面url地址的文章,然后发现自己对于网站实现微信扫码登录功能的实现不是很熟悉,所以,我会写2-3篇的文章来描述下一个站点如何实现微信扫码登录的功能,来复习下微信扫码登 ...
- 轻松完成excel读写操作- 基于POI的框架BingExcel的使用(1)
Bingexcel User Guide 使用maven进行项目开发目前项目的maven仓库是在github上,浏览地址为 https://github.com/bingyulei007/mvn-re ...
- 轻松完成excel读写操作- 基于POI的框架BingExcel的使用(2)
在进行 类转换时候,系统默认注册了一些转换器,当然你也可以自定局部或者全局的转换器.下面进行具体使用说明 java类说明 对应的java实体类,其属性必须要有__@CellConfig__注解,此注 ...
- NX二次开发-OLE/COM向EXCEL表格中插入图片
今晚有一个兄弟问我怎么往EXCEL里插入图片(加工程序单中需要插入图片),这个我之前也没弄过,回复了他一句不知道,后来刚刚干完游戏吃完鸡,就去VC++的书上翻了翻,还真的被我翻到了.VC++的方法往E ...
- NX二次开发-基于MFC界面对话框与NX交互的开发
打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...
- NX二次开发-创建NX9 NXOpenCPP Wizard开发向导模板
这篇文章,我在CSDN,在唐工论坛都发过.http://www.nxopen.cn/forum.php?mod=viewthread&tid=2039&highlight=NX9 博客 ...
- 【NX二次开发】Block UI 目录
Block UI 目录 基本 标签/位图 切换开关 枚举 字符串 多行字符串 操作按钮 列表框 分割线 对象颜色选择器 RGB颜色选择器 绘图区 图层 ...
随机推荐
- Adobe 2019 全家桶 Mac 版(最新版)
经过不断的改革换新,Adobe2019系列已经全面来袭.在软件更新的同时,激活工具也不断的完善!小编带来的是Adobe2019注册机专门为同系列软件量身定做的注册破解工具! ▌软件下载-关注公众号 ...
- Python基础教程(007)--Python的优缺点
前言 了解Python的优点和缺点 知识点 优点 简单易学 免费,开源 面相对象 丰富的库 可扩展性 缺点 运行速度慢 国内市场较小 中文资料匮乏 总结: 明白Python的优点和缺点
- Kubernetes v1.16 对API的更改
前段时间安装Kubernetes v1.16.2,然后从v1.14版本的拷贝yaml文件过来执行,很多都报没有相应的api,查看一下新版本的api admissionregistration.k8s. ...
- Selenium webdriver 安装(一)
6年的.NET开发,干过小项目,做过研发,任何架构.设计模式.各种文档齐全.技术大牛,给我最深的体会是都不如用户最后的轻轻一点,一下毁所有.这个时候我突然想起了一首歌<都选C>哈哈.如何防 ...
- kafka ConsumerConfig 配置
- 能打开电脑都看懂的系列之Windows下修改MongoDB用户密码
起因 还能怎么滴,我忘了MongoDB的密码呗. 操作 进入MongoDB的安装目录的bin目录下,(我的目录是D:\developer\MongoDB\Server\4.2\bin): 用记事本打开 ...
- VTemplate模板引擎的使用--入门篇
1.什么是VTemplate模板引擎? 详细请点击这里. 2.怎样使用VTemplate模板引擎? 第1步: 下载VTemplate模板引擎的最新库文件(从这里下载),下载回来后将库文件引入到你的项目 ...
- Codeforces 578B "Or" Game (前缀和 + 贪心)
Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] 题目链接:B. "Or" Game You are given \(n\) ...
- 力扣算法——142LinkedListCycleII
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To r ...
- layui 下拉框 动态获取数据
$(function(){var grade=$("#grade");grade.append("一年级"); //添加下拉列表grade.append(&qu ...