在工控测试领域,经常需要操作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. jquery和原生js-ajax
  2. 利用virtualenv和pip构建虚环境并安装配置推送客户端
  3. shell中#*,##*,#*,##*,% *,%% *的含义及用法
  4. Exercise: Logistic Regression and Newton's Method
  5. 当 HTTP 连接池遇上 KeepAlive 时
  6. 如何在anaconda环境下安装tensorflow/pytorch/keras等
  7. bzoj#4722-由乃【倍增,抽屉原理,bitset】
  8. 28-hadoop-hbase入门小程序
  9. 李洪强-C语言5-函数
  10. 微信公众帐号开发教程第9篇-QQ表情的发送与接收
  11. [原]JavaScript必备知识系列-作用域
  12. 怎么批量调色_100款一键批量商业影楼修图调色PS动作,让你成为P图高手!!
  13. 2021-08-08 WPF控件专题 StackPanel 控件详解
  14. Zune无法连接手机的解决办法
  15. uniapp 引入第三方包发起网络数据请求
  16. 手机怎样和宽带连接无线路由器设置路由器连接服务器,手机如何设置路由器?...
  17. intel SPR新特性CXL
  18. 【English】十大词性之感叹词(感叹句)
  19. 发布者订阅者模式之JAVA实现
  20. 小程序使用百度图片提取文字api

热门文章

  1. python任务栏通知区域_PyQT实现通知区域图标和对话气泡
  2. 柳如是,当得奇女子。
  3. html页面如何引用母版页,内容页面访问母版页控件的两种方法
  4. 阿尔弗雷德.爱因斯坦论莫扎特钢协
  5. 恒生期货交易时间(恒生指数期货交割日期)
  6. 有道智选-网易效果推广
  7. 嵌入式编程 while(1)的妙用!
  8. LINQ:使用join进行联接
  9. 教程篇(7.0) 08. FortiGate基础架构 诊断 ❀ Fortinet 网络安全专家 NSE 4
  10. 银行招考计算机专业考什么,银行笔试一般都考什么?