VS2015 控制excel 2013 例項
阿新 • • 發佈:2018-12-21
核心步驟
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();