转载-NX11.0二次开发新增Spreadsheet相关类的用法!
这几天搜NX对EXCAL读取写入相关的开发内容,发现唐工写了一篇关于NX11对EXCAL操作的文章。让我知道NX11新增了对EXCAL操作相关的类,以前NX里是没有的。我以前都是用OLE方式去做,没用过其他的,今天学习一下。感谢唐工的分享。
原文出处:http://www.ugsnx.com/thread-167024-1-1.html
ps:经过多次测试,这种方式有一个缺点,就是写入的时候不能覆盖写入,新内容只能接原来的内容继续写。
在 NX11中,新增了与电子表格操作的类;
Spreadsheet
SpreadsheetCellData
SpreadsheetExternal
SpreadsheetManager
对应的头文件为:
#include <NXOpen/Spreadsheet.hxx>
#include <NXOpen/SpreadsheetCellData.hxx>
#include <NXOpen/SpreadsheetExternal.hxx>
#include <NXOpen/SpreadsheetManager.hxx> ```
利用这些类,可以操作内部与外部的电子表格。
我写了一个例子:
、新建电子表格;
、然后写入不同的数据;
、再读取相关内容,打印在信息窗口;
注:个人感觉NX11虽然增加了这些类,但读取的效率比较低下,还没有用UFUN调KF的方法来读写电子表格效率高。 ```c
void MyClass::do_it()
{
UF_initialize();
//创建电子表格
************************ //打开
NXOpen::SpreadsheetExternal *openfile=
theSession->SpreadsheetManager()->OpenFile("c:\\tkl.xls", NXOpen::SpreadsheetManager::OpenModeWrite);
int worksheet = openfile->GetWorksheetIndex("tkl"); //得到电子表格工作页 //在A1-c1中写入数字
std::vector<NXOpen::SpreadsheetCellData *> addata;
for (size_t i = ; i < ; i++)
{
NXOpen::SpreadsheetCellData *celldata = theSession->SpreadsheetManager()->CreateCellData();
celldata->SetType(NXOpen::SpreadsheetCellData::TypesInt);
celldata->SetIntValue((int)i+);
addata.push_back(celldata);
}
openfile->AppendRow(worksheet, addata);
addata.clear(); //在A2-D2中写入字符串
std::ostringstream tempnumberstring;
for (size_t i = ; i < ; i++)
{
NXOpen::SpreadsheetCellData *celldata = theSession->SpreadsheetManager()->CreateCellData();
celldata->SetType(NXOpen::SpreadsheetCellData::TypesString);
tempnumberstring << i+;
std::string covertvalue = tempnumberstring.str();
celldata->SetStringValue("字符" + covertvalue);
addata.push_back(celldata);
tempnumberstring.str("");
tempnumberstring.clear();
}
openfile->AppendRow(worksheet, addata);
addata.clear(); //在A3-C3中写入布尔型
for (size_t i = ; i < ; i++)
{
NXOpen::SpreadsheetCellData *celldata = theSession->SpreadsheetManager()->CreateCellData();
celldata->SetType(NXOpen::SpreadsheetCellData::TypesLogical);
if ((int)i==)
{
celldata->SetLogicalValue(true);
}
else
{
celldata->SetLogicalValue(false);
}
addata.push_back(celldata);
}
openfile->AppendRow(worksheet, addata);
addata.clear(); //读取
std::vector<NXOpen::SpreadsheetCellData *> thedata;
openfile->ReadRange(worksheet, -, -, -, -, thedata); //读取范围,
//打印基本信息
theSession->ListingWindow()->Open();
std::ostringstream tempstring;
tempstring << "表序号:" << thedata[]->IntValue() << ",起始行:" << thedata[]->IntValue() << ",起始列:"
<< thedata[]->IntValue() << ",结束行:" << thedata[]->IntValue() << ",结束列:" << thedata[]->IntValue();
std::string covertvalue = tempstring.str();
theSession->ListingWindow()->WriteFullline(covertvalue);
tempstring.str("");
tempstring.clear(); //打印每个单元格详细信息
for (size_t i = ; i < (int)thedata.size(); i++)
{
NXOpen::SpreadsheetCellData::Types thetype = thedata[i]->Type();
if (thetype == SpreadsheetCellData::TypesInt)
{
tempstring << thedata[i]->IntValue() << ",";
}
else if (thetype == SpreadsheetCellData::TypesDouble)
{
tempstring << thedata[i]->DoubleValue() << ",";
}
else if (thetype == SpreadsheetCellData::TypesString )
{
tempstring << thedata[i]->StringValue().GetLocaleText() << ",";
}
else if (thetype == SpreadsheetCellData::TypesLogical)
{
tempstring << thedata[i]->LogicalValue() << ",";
}
else
{
tempstring << thedata[i]->FormulaValue().GetLocaleText() << ",";
} if ((i - ) % (thedata[]->IntValue() - thedata[]->IntValue() + ) == )
{
std::string covertvalue = tempstring.str();
theSession->ListingWindow()->WriteFullline(covertvalue);
tempstring.str("");
tempstring.clear();
}
} //关闭电子表格并保存
openfile->CloseFile(true); UF_terminate();
}

转载-NX11.0二次开发新增Spreadsheet相关类的用法!的更多相关文章
- scratch3.0二次开发scratch3.0基本介绍(第一章)
为什么要自己开发而不使用官方版本? 这个问题要看我们的做少儿编程教育的需求是怎么样的. scratch本身提供了离线版本以及官网在线平台供我们使用,这足以满足我们对于编程教学模块的需求.但是对于一些教 ...
- 17 win7 sp1 x64/VS2015下配置creo4.0二次开发环境——调用了众多开源库(ceres-solver,PCL1.8.0,office 2016COM接口,MySql数据库等)
0 引言 本次开发环境的配置是在综合考虑了开源库的版本.VS版本以及CREO4.0的版本,同时针对甲方需求选择了win7 sp1 x64系统. 配置的过程中遇到了形形色色的问题,但是一一解决了.通过这 ...
- NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法
今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ...
- android 6.0 SDK中删除HttpClient的相关类的解决方法
一.出现的情况 在eclipse或 android studio开发, 设置android SDK的编译版本为23时,且使用了httpClient相关类的库项目:如android-async-http ...
- CRMEB小程序商城v4.0二次开发对接集成阿里云短信
作者:廖飞 - CRMEB小程序商城研发项目组长 前言 cremb小程序商城v4.0版本支持短信平台为云信,但有部分用户有需求对接阿里云短信,这篇文章将对阿里云短信平台如何对接方以及对接流程详细说明. ...
- TinkPHP框架开发的CRMEB小程序商城v4.0二次开发集成支付宝支付
前言 大家都知道支付宝支付和微信支付宝都只能局限在自己的平台,微信内支付宝支付是根本就不能使用,即使是公众号支付也需要跳转到外部浏览器才可以唤起支付宝支付,并且QQ浏览器唤起支付宝支付还是问题很多,所 ...
- IDEA 编译 Jmeter 4.0 ( 二次开发_1 )
IDEA 编译 Jmeter 下载 http://jmeter.apache.org/download_jmeter.cgi 下载源码后解压『Jmeter』,我这边下载的是最新的『apache-jme ...
- IDEA 编译 Jmeter 5.0(二次开发)
windows10 操作系统,jdk1.8,Intellij IDEA 2018,jmeter5.0 1.下载 http://jmeter.apache.org/download_jmeter.cgi ...
- JMeter4.0二次开发之导入eclipse
1.先建立工程,命名为JMeter4.0. JDK版本为10.0.1 2.在官网下载src文件,通过文件系统导入到JMeter4.0工程中 3.在ant中选择download_jars,ant会自动下 ...
随机推荐
- 【纪中集训】2019.08.10【NOIP提高组】模拟 A 组TJ
T1 Description Solution 有待填坑-- T2 Description 给定一个\(h(≤10)\)层.\(n(≤10)\)行.\(m(≤10)\)列的由泥土组成的立方体,挖开\( ...
- uORBMain.cpp学习
uorb_main int uorb_main(int argc, char *argv[]) { if (argc < 2) { usage(); ...
- Base64和3DES算法
Base64加密算法 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息.它的优点是算法效率高,编码出来的结果比较简短,同时也具有不可读性. ...
- JMeter 阶梯式加压测试插件 Stepping Thread Group
在日常性能测试过程中,有时需要对被测对象不断的增加压力,直至达到某个值后,并持续运行一段时间.这里将借助jmeter插件模拟这种情况. 本文介绍在jmeter中,使用插件Stepping Thread ...
- 探索Redis设计与实现5:Redis内部数据结构详解——quicklist
本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...
- Toast 使用方法大全
原文地址:http://daikainan.iteye.com/blog/1405575 Toast 是一个 View 视图,快速的为用户显示少量的信息. Toast 在应用程序上浮动显示信息给用户, ...
- SpringBoot之Spring@Value属性注入使用详解
在使用Spring框架的项目中,@Value是使用比较频繁的注解之一,它的作用是将配置文件中key对应的值赋值给它标注的属性.在日常使用中我们常用的功能都比较简单,本篇文章系统的带大家来了解一下@Va ...
- 发送邮件 django
https://blog.csdn.net/qq_39138295/article/details/82527868 https://www.cnblogs.com/yoyoketang/p/1048 ...
- 【转】Java类MemoryUsage查看虚拟机的使用情况
原文地址:https://www.cnblogs.com/xubiao/p/5465473.html Java类MemoryUsage,通过MemoryUsage可以查看Java 虚拟机的内存池的内存 ...
- Eclipse转idea改设置
1 自动导包:画圈的打钩,实现自动导包,去除无用包.导入的类名相同时需要自己手动导包-> alt+enter. 2:修改快捷键 左移光标,右移同理. 上移光标:下移同理 光标移至行首,行末为e ...