Inhaltsverzeichnis
(1) Suchen Sie den Pfad, in dem sich die Excel-Bibliothek befindet
(2) Erstellen Sie eine einfache Schnittstelle
(3) Externe Dateien hinzufügen (Dateien in die Excel-Bibliothek importieren)
2. Beginnen Sie mit der Programmierung
Kürzlich gab es ein Projekt, das die Labwindows_cvi-Software als Instrumentensteuerungsprogramm verwenden musste. Wenn ich es verwende, weiß ich, dass die Entwicklungssprache die C-Sprache ist. Es dauerte mehr als einen halben Monat, bis ich mich mit der Labwindows_cvi-Software und der C-Sprachsyntax vertraut gemacht hatte , was den Arbeitsanforderungen kaum entspricht. Das Projekt muss eine Excel-Datei erstellen. Ich beherrsche die Sprache C nicht sehr gut. Ich dachte, ich kann sie mit der Funktion fopen erstellen und verwenden. Die Dateierweiterung entspricht dem Format der Datei. Nachdem ich die Informationen gelesen habe, weiß ich, dass die Dateiformate, die die fopen-Funktion erstellen kann, .txt, .dat, .csv usw. umfassen. Später fragte ich einen Kollegen, der Labwindows verwendet hat. Er sagte, er müsse die Excel-Bibliothek aufrufen, habe sie aber noch nie verwendet. Lass es mich versuchen, finde die Excel-Bibliothek im Installationspfad der Labwindows-Software, öffne sie und Beachten Sie, dass es in Excel verschiedene Betriebsfunktionen gibt, die direkt ausgeführt werden können. .
fopen(“D:\\S_试验结果\\test.xlsx”,w+) //这样是不行的
Es gibt auch einen Meister, der mir gesagt hat, dass es nicht notwendig ist, es zu erstellen. Kopieren Sie es einfach direkt, erstellen Sie zuerst lokal eine neue Excel-Tabelle und rufen Sie dann mit C den DOS-Kopierbefehl auf, um es zu kopieren. Ich habe es nicht versucht. aber es sollte möglich sein.
1. Vorbereitende Arbeiten
(1) Suchen Sie den Pfad, in dem sich die Excel-Bibliothek befindet
Öffnen Sie den Softwareinstallationspfad Labwindows_cvi. Ich habe ihn auf Laufwerk D installiert. Der Pfad lautet „D:\Programme (x86)\National Instruments\CVI2013\toolslib\activex\excel“. Wie in Abbildung 1 dargestellt.
Abbildung 1 Dateipfad der Excel-Bibliothek
(2) Erstellen Sie eine einfache Schnittstelle
Erstellen Sie ein Textsteuerelement und ein Schaltflächensteuerelement. wie in Bild 2 gezeigt.
Abbildung 2 Die erstellte Schnittstelle
(3) Externe Dateien hinzufügen (Dateien in die Excel-Bibliothek importieren)
Wählen Sie das Projekt „CreatExcelFile“ aus, klicken Sie mit der rechten Maustaste und klicken Sie auf „Vorhandene Datei hinzufügen“, wie in Abbildung 3 gezeigt. Suchen Sie jetzt den Pfad der Excel-Bibliotheksdatei, wählen Sie alle Dateien aus und klicken Sie auf „OK“, wie in Abbildung 3 gezeigt Abbildung 4; die endgültig importierte Datei ist in Abbildung 4 5 dargestellt.
Abbildung 3: Hinzufügen externer Dateien zum Projekt
Abbildung 4 Excel-Bibliotheksdatei hinzufügen
Abbildung 5 Die Projektliste nach dem Hinzufügen der Excel-Bibliotheksdatei
2. Beginnen Sie mit der Programmierung
(1) Importieren Sie die Header-Dateien „excelreport.h“ und „excel2000.h“, wie in Abbildung 6 dargestellt.
Abbildung 6: Header-Datei importieren
(2) Schreiben Sie den Implementierungscode.
#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. Erkennen Sie die Wirkung
Führen Sie das Programm aus und klicken Sie auf die Schaltfläche, um eine Excel-Datei zu erstellen. Der Effekt ist in Abbildung 7 und Abbildung 8 dargestellt.
Abbildung 7 Programmschnittstelleneffekt
Abbildung 8 Erstellte Excel-Tabelle