在工控测试领域,经常需要操作excel,用于保存测试的数据及测试结果。本章将介绍LabwindowsCVI对Excel操作的支持。LabwindowsCVI 对excel的支持是基于 windows的excel库,简单点说就是对windows的excel库进行了一层封装,这样我们就能更好的操作excel了。下面将介绍操作Excel的常用API:

  1. ExcelRpt_ApplicationNew

ExcelRpt_ApplicationNew用于启动excel程序,其函数原型如下所示:

HRESULT CVIFUNC ExcelRpt_ApplicationNew (int makeVisible, CAObjHandle *applicationHandle);

其中makeVisible为加载的excel程序是否显示的标志,当其值为1时,显示excel程序界面,如下图所示,applicationHandle为获取的excel程序句柄。

  1. ExcelRpt_WorkbookOpen

ExcelRpt_WorkbookOpen用于打开excel的文件,其函数原型如下所示:

HRESULT CVIFUNC ExcelRpt_WorkbookOpen (CAObjHandle applicationHandle, const char *fileName,CAObjHandle *workbookHandle);

其中applicationHandle为excel程序的句柄,fileName为要打开的excel文件路径,workbookHandle为获取的excel文件句柄。当程序执行成功后,excel程序将显示excel文件内容,如下所示:

3、ExcelRpt_GetWorksheetFromIndex

ExcelRpt_GetWorksheetFromIndex为获取excel文件中某个sheet句柄,其函数原型如下所示:

HRESULT CVIFUNC ExcelRpt_GetWorksheetFromIndex (CAObjHandle workbookHandle, int Index,CAObjHandle *worksheetHandle);

其中workbookHandle为excel文件的句柄,Index为excel文件中sheet的索引,其索引值从1开始,worksheetHandle为获得的sheet句柄。

4、ExcelRpt_GetCellValue

ExcelRpt_GetCellValue为获取sheet中某cell的内容,其函数原型如下所示:

HRESULT CVIFUNC ExcelRpt_GetCellValue (CAObjHandle worksheetHandle, const char *cellRange,enum ExREnum_ExDataType dataType, void *dataValue);

其中worksheetHandle为sheet句柄,cellRange为cell的索引,dataType为数据类型,通常情况下,该值设置为CAVT_CSTRING,这样我们可以读取各种数据,然后进行转换,dataValue为读取的数据指针。

5、ExcelRpt_SetCellValue

ExcelRpt_SetCellValue用于设置sheet中某cell内容,其函数原型如下所示:

HRESULT ExcelRpt_SetCellValue (CAObjHandle worksheetHandle, char cellRange[], enum ExREnum_ExDataType dataType, ...);

其中worksheetHandle为sheet句柄,cellRange为cell的索引,dataType为数据类型。

6、ExcelRpt_SetCellRangeAttribute

ExcelRpt_SetCellRangeAttribute为设置cell的属性值,其函数原型如下所示:

HRESULT CVIFUNC_C ExcelRpt_SetCellRangeAttribute (CAObjHandle worksheetHandle, const char* cellRange,int attribute, ...);

其中worksheetHandle为sheet句柄,cellRange为cell的索引,attribute为属性的名称,…为属性的值。在测试中,我们经常使用该函数用于设置cell的背景颜色,用于直观感受是否测试通过。

7、ExcelRpt_WorkbookClose

ExcelRpt_WorkbookClose用于关闭打开的excel文件,其函数原型如下所示:

HRESULT CVIFUNC ExcelRpt_WorkbookClose (CAObjHandle workbookHandle, int saveChanges);

其中workbookHandle为excel打开文件的句柄,saveChanges为关闭时,是否保存excel文件的标志,通常我们设置该值为1,否则测试的数据将保存不了。

8、ExcelRpt_ApplicationQuit

ExcelRpt_ApplicationQuit用于关闭打开的excel程序,其函数原型如下所示:

HRESULT CVIFUNC ExcelRpt_ApplicationQuit (CAObjHandle applicationHandle);

其中applicationHandle为打开的excel程序实例句柄。

9、ExcelRpt_GetErrorInfo

ExcelRpt_GetErrorInfo用于得到操作excel异常原因,其函数原型如下所示:

ERRORINFO * CVIFUNC ExcelRpt_GetErrorInfo(void);

该函数返回ERRORINFO的指针,我们可以观察ERRORINFO-> description的异常描述。

10、CA_DiscardObjHandle

CA_DiscardObjHandle用于释放objHandle对象,其函数原型如下所示:

HRESULT CVIFUNC CA_DiscardObjHandle(CAObjHandle objHandle);

项目实践:

新建一个LabwindowsCVI工程,然后往工程添加Excel库文件,如下图所示:

这些库文件可以在LabwindowsCVI安装路径下找到,其路径为:D:\Program Files (x86)\National Instruments\CVI2013\toolslib\activex\excel。

本工程excel测试代码如下所示:

#include <cvirte.h>

#include <userint.h>

#include "ExcelTest.h"

#include "excel2000.h"

#include "excelreport.h"

#include <ansi_c.h>

static CAObjHandle applicationHandle = 0;

static CAObjHandle workbookHandle = 0;

static CAObjHandle worksheetHandle = 0;

ERRORINFO *pExcelErrorInfo;

char excelStringValue[256];

void ExcelTest(void)

{

HRESULT error;

if(applicationHandle == 0)

{

error = ExcelRpt_ApplicationNew(1, &applicationHandle);

if (error<0)

{

pExcelErrorInfo = ExcelRpt_GetErrorInfo();

printf("ExcelRpt_ApplicationNew error: %s\r\n",pExcelErrorInfo->description);

}

}

if(workbookHandle == 0)

{

error = ExcelRpt_WorkbookOpen(applicationHandle,"D:\\lujinming\\个人资料\\Labwindows编程\\LabwindowsCVI_Excel\\ExcelTest.xlsx",&workbookHandle);

if(error < 0)

{

pExcelErrorInfo = ExcelRpt_GetErrorInfo();

printf("ExcelRpt_WorkbookOpen error: %s\r\n",pExcelErrorInfo->description);

}

}

if(worksheetHandle == 0)

{

error = ExcelRpt_GetWorksheetFromIndex(workbookHandle,1,&worksheetHandle);

if(error < 0)

{

pExcelErrorInfo = ExcelRpt_GetErrorInfo();

printf("ExcelRpt_GetWorksheetFromIndex error: %s\r\n",pExcelErrorInfo->description);

}

}

ExcelRpt_SetCellValue(worksheetHandle,"A1",CAVT_CSTRING,"Pass");

ExcelRpt_GetCellValue(worksheetHandle,"A1",CAVT_CSTRING,excelStringValue);

printf("A1=%s\r\n",excelStringValue);

ExcelRpt_SetCellValue(worksheetHandle,"A2",CAVT_CSTRING,"Fail");

ExcelRpt_SetCellRangeAttribute(worksheetHandle,"A2",ER_CR_ATTR_BGCOLOR,0xFF0000);

if (worksheetHandle)

CA_DiscardObjHandle(worksheetHandle);

if (workbookHandle)

{

ExcelRpt_WorkbookClose(workbookHandle, 1);

CA_DiscardObjHandle(workbookHandle);

}

if (applicationHandle)

{

ExcelRpt_ApplicationQuit(applicationHandle);

CA_DiscardObjHandle(applicationHandle);

}

}

static int panelHandle;

int main (int argc, char *argv[])

{

if (InitCVIRTE (0, argv, 0) == 0)

return -1;       /* out of memory */

if ((panelHandle = LoadPanel (0, "ExcelTest.uir", PANEL)) < 0)

return -1;

DisplayPanel (panelHandle);

ExcelTest();

RunUserInterface ();

DiscardPanel (panelHandle);

return 0;

}

int CVICALLBACK Quit (int panel, int control, int event,

void *callbackData, int eventData1, int eventData2)

{

switch (event)

{

case EVENT_COMMIT:

QuitUserInterface (0);

break;

}

return 0;

}

执行效果如下所示:

LabwindowsCVI Excel操作说明及事例相关推荐

  1. LabwindowsCVI 串口编程及事例

    串口是一种常见的通信总线技术,其支持全双工模式,且只支持一对一的访问模式,大部分设备都支持串口通讯,可通过串口控制设备或采集数据.下面将介绍LabwindowsCVI对串口的支持. OpenComCo ...

  2. 微信小程序 Notes | 常用开发事例(五)基于云平台导出 Excel

    历史文章回顾: 微信小程序 | 开发常用事例(一) 微信小程序 | 开发常用事例(二) 微信小程序 Notes | 开发常用事例(三) 微信小程序 Notes | 开发常用事例(四) 一.前言 最近一 ...

  3. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)...

    自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...

  4. 易语言录入数据到access里重复提示_一招搞定:excel数据共享协同

    Excel用户都很清楚,excel用起来确实比较方便,但是互联网办公时代,却有很多弊端,比如说数据共享协作,用户权限控制等是个很大的麻烦,一般人在这个问题上都玩不转.举个例子:销售部经理,每天或每周让 ...

  5. python3读取excel数据-【Python3学习系列】——Python读取Excel

    看完这篇教程,你会了解到Python3导入Excel2007及以上版本的基本步骤,了解相关连接数据库的基本步骤,了解cx_Oracle.pymssql openpyxl等包的使用,和其他关于Pyhto ...

  6. 关于Excel导入的问题记录

    当Excel导入成为需要时,之前的导出Excel为html方式的方法就受阻了,于是,需要开始新的百度与google来解决问题. 前提为OLEDB+Excel. 根据需求,多数是对于表的数据的导入.于是 ...

  7. Excel制作考勤管理

    一.在选择年月 在选择年月的下拉菜单,有Excel中的--数据--数据有效性--序列--来源(用逗号分开) 二.在Excel中显示今天的时间及时间   函数代码:(="今天是:"& ...

  8. POI异步导入Excel兼容xsl和xlsx

    项目架构:spring+struts2+hibernate4+oracle 需求:用户导入excel文件,导入到相应的数据表中,要求提供导入模板,支持xls和xlsx文件 思路分析: 1.提供一个下载 ...

  9. 实现弹出悬浮页面_30秒快速实现Excel每页标题行的打印!

    实际场景: 在打印大量数据表格时,想要打印出来的每页都有标题行,但又不想每页插入一次标题,并且这个位置也不容易控制,那么今天教大家一个非常简单的方法,实现打印时,每页都能显示标题行.如效果图所示: 效 ...

最新文章

  1. 一篇文章一张思维导图看懂Android学习最佳路线
  2. 基带信号传输之信道均衡
  3. matlab混合编程设置,matlab c++ 混合编程初始设置
  4. python程序员又叫什么-Python程序员鲜为人知但你应该知道的17个问题
  5. 【pmcaff】从 Lending Club 的 IPO,我们能学到些什么
  6. NET Core 3.0 AutoFac替换内置DI的新姿势
  7. 前端学习(661):逻辑运算符
  8. 2017.6.23 染色 思考记录
  9. php基础知识填空题,比较基础的php面试题及答案填空题
  10. object-fit 解决图片指定大小被压缩问题
  11. java xml annotation_Annotation与XML配置ID生成策略
  12. 多核cpu的特殊中断
  13. 计算机基础一体化教程(习题)
  14. 跨平台数据库ODB实战3-Person类的存储、查询、更新和删除
  15. JavaScript脚本编写的两个创意时钟
  16. U盟用新浪微博第三方登录 文件不存在 c8998 解决办法
  17. 学了 C 语言到底能做什么, 能从事什么工作?(附课程)
  18. PostgreSQL基础(概念篇)
  19. C++ 栈和队列 容器适配器
  20. python windows api hook_windows hook + pyhook3 + python win32api hook + C 键盘hook

热门文章

  1. 卖NFT表情包赚上百万,区块链技术终于找到了真正价值?
  2. 介绍一个产品的思维导图_产品经理可以用思维导图做什么?
  3. android 获取粗略位置_从Android上的GPS提供商处获取*粗略*位置
  4. 率土之滨服务器维护2月19日,率土之滨连发两封致歉信后,资深月卡党的我决定重新入坑...
  5. git reset三种模式区别和使用场景(hard,soft,mixed)
  6. 2013网易实习生招聘 岗位:数据挖掘工程师
  7. [Err] 1418 - This function has none of DETERMINIST
  8. 网络知识:水晶头网线和网线插座接法制作过程介绍
  9. 可视化全链路日志追踪
  10. ③企业虚拟化Kvm 管理、kvm高级命令、磁盘格式转换、挂载磁盘、第三篇