📄 sample9excel.c
字号:
#include <cviauto.h>
#include <utility.h>
#include <ansi_c.h>
#include <userint.h>
#include "toolbox.h"
#include "sample9excel.h"
#include "sample9excel8.h"
#define caErrChk errChk
#define APP_AUTOMATION_ERR "Excel自动化服务器错误"
#define APP_WARNING "警告"
#define EXCEL_ARRAY_OF_CELLS "A2:H11"
#define ROWS 10
#define COLUMNS 8
#define LAUNCHERR "启动Excel错误"
//变量定义
static int panelHandle = 0;
static int excelLaunched = 0;
static int appVisible = 1;
static char FileSavePath[MAX_PATHNAME_LEN];
static char MyBuff[1000];
static HRESULT status;
static ExcelObj_App ExcelAppHandle = 0;
static ExcelObj_Workbooks ExcelWorkbooksHandle = 0;
static ExcelObj_Workbook ExcelWorkbookHandle = 0;
static ExcelObj_Window ExcelWindowHandle = 0;
static ExcelObj_Sheets ExcelSheetsHandle = 0;
static ExcelObj_Worksheet ExcelWorksheetHandle = 0;
static ExcelObj_Range ExcelRangeHandle = 0;
static ExcelObj_Dialog DialogHandle = 0;
static ExcelObj_ChartObject ExcelChartObjHandle = 0;
static ExcelObj_Chart ExcelChartHandle = 0;
static ExcelObj_ChartGroup ExcelChartsHandle = 0;
static ExcelObj_ChartArea ChartAreaHandle = 0;
static ExcelObj_ChartTitle ChartTitleHandle = 0;
static ExcelObj_ChartColorFormat ChartColorHandle = 0;
static ExcelObj_ChartFillFormat ChartFillHandle = 0;
static ERRORINFO ErrorInfo;
static VARIANT MyVariant;
static LPDISPATCH MyDispatch;
static VARIANT MyCellRangeV;
static int typeArr[] = {CAVT_LONG, CAVT_LONG, CAVT_LONG};
//static int OpenEEXFile (void);
//----------------------------------------------------------------------------
// Prototypes
//----------------------------------------------------------------------------
static HRESULT SaveDocument (CAObjHandle ExcelWorksheetHandle, char *fileName);
HRESULT ClearObjHandle(CAObjHandle *objHandle);
static int ShutdownExcel(void);
static void ReportAppAutomationError (HRESULT hr);
static int OpenEEXFile (void);
//主程序
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1;
SetSleepPolicy (VAL_SLEEP_MORE);
if ((panelHandle = LoadPanel (0, "sample9excel.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
ShutdownExcel();
return 0;
}
// 启动EXCEL,并打开EXCEL文件
int CVICALLBACK Launchexcel (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int success;
HRESULT error = 0;
char pathName[MAX_PATHNAME_LEN];
switch (event) {
case EVENT_COMMIT:
// Launch App
SetWaitCursor (1);
Excel_NewApp (NULL, &ExcelAppHandle);
SetWaitCursor (0);
// Make App Visible
Excel_SetProperty (ExcelAppHandle, NULL, Excel_AppVisible, CAVT_BOOL, VTRUE);
//UpdateUIRDimming(panelHandle);
MakeApplicationActive ();
excelLaunched = 1;
//打开EXCEL文件
OpenEEXFile();
break;
}
return 0;
}
// 关闭文件
int CVICALLBACK Shutdownexcel (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int success = 0;
HRESULT error = 0;
switch (event) {
case EVENT_COMMIT:
SetWaitCursor (1);
ShutdownExcel();
SetWaitCursor (0);
break;
}
return 0;
}
// 关闭Excel
static int ShutdownExcel(void)
{
HRESULT error = 0;
ClearObjHandle (&ExcelRangeHandle);
ClearObjHandle (&ExcelWorksheetHandle);
ClearObjHandle (&ExcelSheetsHandle);
if (ExcelWorkbookHandle)
{
// 关闭工作簿前没有存盘
Excel_WorkbookClose (ExcelWorkbookHandle, NULL, CA_VariantBool (VFALSE),
CA_DEFAULT_VAL, CA_VariantBool (VFALSE));
ClearObjHandle (&ExcelWorkbookHandle);
}
ClearObjHandle (&ExcelWorkbooksHandle);
if (ExcelAppHandle)
{
if (excelLaunched)
{
Excel_AppQuit (ExcelAppHandle, &ErrorInfo);
}
ClearObjHandle (&ExcelAppHandle);
}
return 0;
}
// 打开文件子函数
static int OpenEEXFile(void)
{
HRESULT error = 0;
CAObjHandle docsHandle = 0;
int BOLE;
char fileName[MAX_PATHNAME_LEN];
// Get Workbooks
Excel_GetProperty (ExcelAppHandle, NULL, Excel_AppWorkbooks,
CAVT_OBJHANDLE, &ExcelWorkbooksHandle);
// 打开 EXCEL文件
GetProjectDir (fileName);
//输入EXCEL表的文件名
strcat(fileName, "\\sample9excel.xls");
Excel_WorkbooksOpen (ExcelWorkbooksHandle, NULL, fileName, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, &ExcelWorkbookHandle);
// Get Active Workbook Sheets
Excel_GetProperty (ExcelAppHandle, NULL, Excel_AppSheets,
CAVT_OBJHANDLE, &ExcelSheetsHandle);
// Get First Sheet
Excel_SheetsItem (ExcelSheetsHandle, NULL, CA_VariantInt(1),
&ExcelWorksheetHandle);
// Make First Sheet Visible - should already be visible
Excel_SetProperty (ExcelWorksheetHandle, NULL, Excel_WorksheetVisible,
CAVT_LONG, ExcelConst_xlSheetVisible);
return 0;
}
// 打印文件
int CVICALLBACK PrintEXFile (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
HRESULT error = 0;
switch (event) {
case EVENT_COMMIT:
if (ExcelWorksheetHandle)
{
Excel_WorksheetPrintOut (ExcelWorksheetHandle, NULL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL);
MessagePopup("打印机", "文档已经打印...");
}
break;
}
return 0;
}
// 保存文件
int CVICALLBACK SaveEXFile (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
HRESULT error = 0;
char fileName[MAX_PATHNAME_LEN];
switch (event) {
case EVENT_COMMIT:
if (ExcelWorkbookHandle)
{
GetProjectDir (fileName);
if (FileSelectPopup (fileName, "*.xls", "*.xls",
"Save file as...", VAL_SAVE_BUTTON,
0, 1, 1, 1, fileName)>0)
{
SetWaitCursor (1);
CA_VariantSetCString(&MyVariant, fileName);
Excel_WorkbookSaveAs (ExcelWorkbookHandle, NULL, MyVariant,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, ExcelConst_xlNoChange,
CA_DEFAULT_VAL, CA_DEFAULT_VAL,
CA_DEFAULT_VAL, CA_DEFAULT_VAL);
CA_VariantClear(&MyVariant);
SetWaitCursor (0);
}
}
break;
}
return 0;
}
//文件关闭
int CVICALLBACK CloseEXFile (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
HRESULT error = 0;
VARIANT wdSaveChangesVt;
switch (event) {
case EVENT_COMMIT:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -