LabWindowsCVI中调用Excel

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LabWindows/CVI中调用Excel

设计要求:

1.启动Microsoft Excel并打开xls文件;

2.向xls文件中写入数据;

3.根据所填入的数据完成画图功能;

4.Xls具有存盘,关闭等功能;

5.关闭Microsoft Excel。

利用ActiveX技术进行Excel访问。ActiveX技术以微软的COM技术为基础,也称之为ActiveX自动化。

ActiveX是一种软件组件,它可以插入到不同的应用程序中,并被当作程序的一部分来使用。利用ActiveX可以把两个或两个以上的应用程序组合在一起,使其像应用程序一样工作,或者可以在同一应用程序外壳中进行不同应用程序间的切换。

生成自动化仪器驱动器

在LabWindows/CVI的工程主窗口中选择Tool/Create ActiveX

Controller,弹出ActiveX Controller Wizard对话框,点击Next

进入自动化服务器选择对话框,如图1所示。选择Microsoft Exc

el 12.0 Object Library,点击Next进入服务器配置对话框,如图所示。ActiveX Server 表示已选中的ActiveX服务器名称,Instnmmnt Prefix表示生成驱动器的前缀,可以设置为空或键人有效的C语言标识符,若不输入任何字符,系统会默认产生一个

有效的文件名,一般情况下不用修改此属性。Target.fp File表示CVI产生的.fp文件在磁盘中的存储路径,点击Browse可以

查找或定位一个.fp文件。将Add.fp File To Project选中表示允许把所产生的.fp文件加入当前工程中。点击Compatibility Options进入兼容选项对话框,通过该对话框选项可以保持所产生的代码源文件与已经存在的ActiveX仪器驱动的向后兼容性,系统默认为Per Property。点击Next进入高级选项对话框,在高级选项对话框中,点击Advanced Option 将显示高级函数配置对话框,可以通过此对话框来增减ActiveX对象及修改对象的名称和标识符,高级函数一般采用默认配置即可。配置好高级函数之后,点击OK,返回到高级选项对话框,再点击Next按钮,系统会自动产生ActiveX所有驱动器文件,可以看到在左侧导航栏Instrument files中已经加入了驱动文件。

图l 自动化服务器选择对话框

自动化服务器配置对话框

自动化服务器面板

附程序:

//---------------------------------------------------------------------------- #include

#include

#include

#include

#include "toolbox.h"

#include "exceldem.h"

#include "excel97.h"

#define caErrChk errChk

#define APP_AUTOMATION_ERR "Error: Microsoft Excel Automation"

#define APP_WARNING "Warning"

#define EXCEL_ARRAY_OF_CELLS "A2:H11"

#define ROWS 10

#define COLUMNS 8

#define LAUNCHERR "\

An error occurred trying to launch Excel 97 through its automation interface.\n\n\ Ensure that Excel is installed and that you can launch it manually. If errors\n\ persist, try to launch Excel manually and use the CONNECT button instead."

//---------------------------------------------------------------------------- // Variables

//---------------------------------------------------------------------------- static int panelHandle = 0;

static int excelLaunched = 0;

static int appVisible = 1;

static HRESULT status;

static ExcelObj_App ExcelAppHandle = 0;

static ExcelObj_Workbooks ExcelWorkbooksHandle = 0;

static ExcelObj_Workbook ExcelWorkbookHandle = 0;

static ExcelObj_Sheets ExcelSheetsHandle = 0;

static ExcelObj_Worksheet ExcelWorksheetHandle = 0;

static ExcelObj_Range ExcelRangeHandle = 0;

static ExcelObj_ChartObject ExcelChartObjHandle = 0;

static ExcelObj_Chart ExcelChartHandle = 0;

static ExcelObj_ChartGroup ExcelChartsHandle = 0;

static ERRORINFO ErrorInfo;

static VARIANT MyVariant;

static LPDISPATCH MyDispatch;

static VARIANT MyCellRangeV;

//---------------------------------------------------------------------------- // Prototypes

//---------------------------------------------------------------------------- HRESULT ClearObjHandle(CAObjHandle *objHandle);

static int ShutdownExcel(void);

static void ReportAppAutomationError (HRESULT hr);

static void InitVariables(void);

static int UpdateUIRDimming(int panel);

//---------------------------------------------------------------------------- // Main

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

{

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

return -1;

CA_InitActiveXThreadStyleForCurrentThread (0, COINIT_APARTMENTTHREADED);

SetSleepPolicy (VAL_SLEEP_MORE);

相关文档
最新文档