1. 程式人生 > >VS2015 控制excel 2013 例項

VS2015 控制excel 2013 例項

               

核心步驟

1、建立一個空的控制檯專案

2、在專案中加入一個ExcelImport.h 檔案,內容如下:

#pragma once#import "libid:2DF8D04C-5BFA-101B-BDE5-00AA0044DE52" \    rename("RGB", "MSORGB") \    rename("DocumentProperties", "MSODocumentProperties")using namespace Office;#import "libid:0002E157-0000-0000-C000-000000000046"using namespace VBIDE;#import "libid:00020813-0000-0000-C000-000000000046" \    rename("DialogBox"
, "ExcelDialogBox") \    rename("RGB", "ExcelRGB") \    rename("CopyFile", "ExcelCopyFile") \    rename("ReplaceText", "ExcelReplaceText") \    no_auto_exclude

3、建立一個ExcelDriver類,主要程式碼如下:

ExcelDriver.h的內容如下

#pragma once#include "ExcelImport.h"struct ExcelDriver{ Excel::_ApplicationPtr xl;  // Pointer to Excel.
public: ExcelDriver(); ~ExcelDriver(); static ExcelDriver& Instance();};

ExcelDriver.cpp的內容如下
#include "ExcelDriver.h"ExcelDriver::ExcelDriver(){CoInitialize(NULL);xl.CreateInstance(L"Excel.Application");}ExcelDriver::~ExcelDriver(){CoUninitialize();}ExcelDriver& ExcelDriver::Instance(){static
ExcelDriver singleton;return singleton;}


4、main.cpp的內容為

#include <iostream>using namespace std;#include "ExcelDriver.h"int main(int argc, char* argv[]){cout << "Starting Excel\n";ExcelDriver& excel = ExcelDriver::Instance();Excel::_ApplicationPtr& xl = excel.xl;xl->PutVisible(0, VARIANT_TRUE);system("pause"); //加上這句才能正常執行,否則的話程序會自動結束,//然後會自動關閉excel!return 0;}


執行之後就可以看到excel 視窗了.

此外,不知道為啥如果不用c++包裝,直接在主函式裡寫如下程式碼時,執行時會報異常:求大神解釋:-(

Excel::_ApplicationPtr xl; CoInitialize(NULL); // Start excel application. xl.CreateInstance(L"Excel.Application"); xl->PutVisible(0, VARIANT_TRUE);  CoUninitialize();