Labwindows_cvi基于C语言创建Excel文件

目录

1.前期准备工作

(1)找到Excel库所在路径

(2)搭建简单界面

(3)添加外部文件(导入Excel库里的文件)

2.开始编程

3.实现效果


最近有项目需要用Labwindows_cvi软件做仪器控制程序,用的时候才知道开发语言是C语言,花了半个多月熟悉Labwindows_cvi软件和C语言语法,勉强满足工作需要。项目中需要创建 Excel文件,对C语言还不是特别熟练,以为用fopen函数就可以创建并使用了,创建完文件打开的时候,提示“无法打开该文件,因为格式或者文件扩展名无效,请确保文件扩展名与文件的格式匹配”。翻阅资料才知道fopen函数能创建的文件格式有.txt、.dat、.csv等。后来问了一下用过Labwindows的同事,他说需要调用Excel库,他也没有用过,让我试试,找到labwindows软件安装路径下的Excel库,打开看见excel各种操作函数都有,直接搞定。

fopen(“D:\\S_试验结果\\test.xlsx”,w+)   //这样是不行的 

还有一位大神,跟我说都不用创建,直接复制就可以,先在本地新建一个Excel表,然后用C去调DOS复制命令复制一下就可以,这个我没有试,但是应该是可以的。

1.前期准备工作

(1)找到Excel库所在路径

打开Labwindows_cvi软件安装路径,我是安装在D盘,路径是“D:\Program Files (x86)\National Instruments\CVI2013\toolslib\activex\excel”。如图1所示。

                                                                                              图1  excel库文件路径

(2)搭建简单界面

创建一个文本控件和一个按钮控件。如图2所示。

                                                                                         图2  搭建好的界面

(3)添加外部文件(导入Excel库里的文件)

选中项目“CreatExcelFile”,点击鼠标右键,点击“Add Existing file”,如图3所示;找到刚才excel库文件路径,将所有文件选中,点击ok,如图4所示;最终导入的文件如图5所示。

                                                                               图3 项目中添加外部文件

                                                                             图4  添加excel库文件

                                                                图5 添加完excel库文件后的项目列表

2.开始编程

(1)引入头文件"excelreport.h"和"excel2000.h";如图6所示。

                                                                            图6 引入头文件

(2)编写实现代码。

#include <cvirte.h>		
#include <userint.h>
#include "CreatExcelFile.h"
#include "excelreport.h"   
#include "excel2000.h"

static int excelpanel;

int main (int argc, char *argv[])
{
	if (InitCVIRTE (0, argv, 0) == 0)
		return -1;	/* out of memory */
	if ((excelpanel = LoadPanel (0, "CreatExcelFile.uir", ExcelPANEL)) < 0)
		return -1;
	DisplayPanel (excelpanel);
	RunUserInterface ();
	DiscardPanel (excelpanel);
	return 0;
}

int CVICALLBACK ExcelPANEL_callback (int panel, int event, void *callbackData,
									 int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_GOT_FOCUS:

			break;
		case EVENT_LOST_FOCUS:

			break;
		case EVENT_CLOSE:
			QuitUserInterface (0);
			break;
	}
	return 0;
}

int CVICALLBACK CreatExcelFile_callback (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	//保存路径 
	char savePath[MAX_PATHNAME_LEN]; 
	//文件保存路径
	char fileSavePath[MAX_PATHNAME_LEN]; 
	// excelApp句柄	   
	static CAObjHandle appHandle=0; 
	// excel工作区间句柄	
	static CAObjHandle bookHandle=0; 
	// excel工作区间表格1句柄   
	static CAObjHandle sheetHandle=0;
	// excel工作区间表格1句柄
	static CAObjHandle sheetHandle1=0; 
 
	switch (event)
	{
		case EVENT_COMMIT:	  
			//弹出文件夹选择框
			if(DirSelectPopupEx ("", "请选择存储文件夹", savePath)<0)    
			{
				return 0;  	   	   
			}	  
			// 将路径显示在界面文本控件  
			SetCtrlVal (excelpanel, ExcelPANEL_excelFile_path, savePath);    
		    // 获取文本控件路径
			GetCtrlVal (excelpanel, ExcelPANEL_excelFile_path, fileSavePath);
		    // 生成文件保存路径
			strcat(fileSavePath, "\\Data.xlsx" ); 
		 
			 
			//如果没有创建应用程序,则创建excel  
			if(appHandle==0)	   
			{	  
				ExcelRpt_ApplicationNew(0,&appHandle); 
			}
			else	 //如果已经创建,则首先关闭前一次的book和sheet   
			{	   
				ExcelRpt_ApplicationQuit(appHandle);  
				CA_DiscardObjHandle(appHandle);
				ExcelRpt_ApplicationNew(0,&appHandle); 
			}	
			//新建一个excel文件
			ExcelRpt_WorkbookNew(appHandle,&bookHandle);
			//获取sheet1句柄
			ExcelRpt_GetWorksheetFromName( bookHandle,"Sheet1",&sheetHandle);  
			//将Sheet1的名称改为amp
			ExcelRpt_SetWorksheetAttribute (sheetHandle, ER_WS_ATTR_NAME, "amp"); 
			//在已有的sheet表后面增加一个sheet表格
			ExcelRpt_WorksheetNew(bookHandle , -1,  &sheetHandle1);	 
			//将新增加的sheet表格名称改为pha
			ExcelRpt_SetWorksheetAttribute (sheetHandle1, ER_WS_ATTR_NAME, "pha");
	   		//excel 文件保存													
			ExcelRpt_WorkbookSave(bookHandle,fileSavePath,ExRConst_DefaultFileFormat  );
	 		//将文件设为可见  
		    //ExcelRpt_SetApplicationAttribute (appHandle, ER_AP_ATTR_VISIBLE, 1);  
			//退出excel文件
			ExcelRpt_ApplicationQuit(appHandle); 
			//释放excel资源
			CA_DiscardObjHandle(appHandle);  
			appHandle=0; 
			//弹出提示框
			MessagePopup("提示", "Excle文件已经创建!");   
			break;
	}
	return 0;
}

3.实现效果

运行程序,点击创建excel文件按钮,效果如图7、图8。

                                                                    图7 程序界面效果

                                                                   图8 创建完成的Excel表

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值