⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample9excel.c

📁 用CVI实现的EXCEL自动化服务器演示i
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -