1、LABWINDOWS中如何输出EXCEL报表LABWINDOWS作为测控领域的优秀开发平台,对于具有C语言基础的人员来说使用特别方便。有时我们可能需要CVI输出数据文件并且打印报表,我现在简单介绍一下CVI输出EXCEL报表的一种方法,本人不是专业程序员,主要用CVI做一些自动控制方面的PC机端的简单编程,所以可能某些地方不专业! 1、按要求用EXCEL做好报表模板存储成普通EXCEL文件格式,2000或2003都可以。2、打开CVI,按照正常方法设计用户操作界面,当然界面上至少要有“打开EXCEL程序”或“传递数据到EXCEL“等按钮,生成C源程序框架。3、工程中添加excelreport.
2、fp位于.CVI90toolslibactivexexcel目录下,4、“打开EXCEL程序”按钮的回调函数的编写重要!int CVICALLBACK LaunchExcelCB (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)char ExcelFileNameMAX_PATHNAME_LEN=0;switch (event)case EVENT_COMMIT: SetWaitCursor (1);LaunchError=ExcelRpt_ApplicationNew(
3、1, &applicationHandle);SetWaitCursor (0);if (LaunchError0)MessagePopup (自动启动Excel错误:, 通过自动接口试图启动Excel发生错误。 );break;/退出程序。GetProjectDir (ExcelFileName); /得到Project当前目录名,(将第一步中的模板*.xls文件copy到工程文件目录下)strcat(ExcelFileName, *.xls);/字符串连接ExcelRpt_WorkbookOpen (applicationHandle, ExcelFileName, &workbookHa
4、ndle);/打开该路经下的EXCEL文件ExcelRpt_GetWorksheetFromIndex (workbookHandle, 1, &worksheetHandle); ExcelRpt_ActivateWorksheet (worksheetHandle); /激活该句柄的电子表格sheetbreak;return 0; 当然程序开头处要声明,目标句柄。static CAObjHandle applicationHandle ;static CAObjHandle workbookHandle ;static CAObjHandle worksheetHandle ;5、“传递数
5、据到EXCEL“按钮的回调函数的编写重要! char ExcelCellNum8=0; char TableValue10=adasfafdf; / 将TableValue 中的数据传入Excel。按照模板格式设计下面语句。for(int i=0;i10;i+) sprintf(ExcelCellNum,%s%d,B,i+1); /处理Excel单元格字串 ExcelRpt_SetCellValue (worksheetHandle, ExcelCellNum, ExRConst_dataString, TableValue);/数据写入EXCEL。 ExcelRpt_SetCellValue
6、 (worksheetHandle, A9, ExRConst_dataString, HGP7561);/写到第1列第9行单元处 /设置EXCEL单元格边框。 ExcelRpt_RangeBorder (worksheetHandle, B1:C6, ExRConst_Continuous, 255, ExRConst_Thin,ExRConst_InsideHorizontal | ExRConst_InsideVertical | ExRConst_EdgeBottom |ExRConst_EdgeLeft|ExRConst_EdgeRight|ExRConst_EdgeTop);6、关
7、闭按钮回调函数。int CVICALLBACK CloseCB (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)switch (event)case EVENT_COMMIT:if (worksheetHandle)CA_DiscardObjHandle(worksheetHandle);/if (chartHandle)/ CA_DiscardObjHandle(chartHandle);if (workbookHandle)ExcelRpt_WorkbookClose
8、(workbookHandle, 0);CA_DiscardObjHandle(workbookHandle);if (applicationHandle)ExcelRpt_ApplicationQuit(applicationHandle);CA_DiscardObjHandle(applicationHandle);QuitUserInterface (0);break;return 0;为了程序简单没有使用Microsoft Excel 9.0 Object Library的库函数。当然也完全可以不要第一步中的模板文件,在第5步中完全用函数来设置生成EXCEL工作表。把这行,ExcelRpt_WriteData (worksheetHandle, A1:H2, ExRConst_dataString, 2, 8,TableValue);改成,ExcelRpt_SetCellValue (worksheetHandle, A1, ExRConst_dataString, TableValue);每单元格单独操作就可以,是不是CVI的问题?我用的是9.0版。