Import Excel TypeLibs
1
2
3
| #import "MSO.DLL" rename("RGB", "MsoRGB") rename("DocumnetProperties", "MsoDocumnetProperties")
#import "VBE6EXT.OLB"
#import "EXCEL11.TLB" rename("RGB", "ExcelRGB") rename("DialogBox", "ExcelDialogBox") rename("ReplaceText", "ExcelReplaceText") rename("CopyFile", "ExcelCopyFile") no_auto_exclude
|
After Compiled, Output files:
- excel11.tlh
- excel11.tli
- mso.tlh
- mso.tli
- vbe6ext.tlh
- vbe6ext.tli
Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| // testExcel.h
#ifndef TESTTOOLS_TESTEXCEL_H_
#define TESTTOOLS_TESTEXCEL_H_
#include "excel\excelTypeLibs.h"
namespace TEST_EXCEL {
struct com_t {
com_t() { CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); }
~com_t() { CoUninitialize(); }
};
struct wait_cursor_t {
HCURSOR cursor;
wait_cursor_t() { cursor = SetCursor(LoadCursor(NULL, IDC_WAIT)); }
~wait_cursor_t() { SetCursor(cursor); }
};
bool ExportExcel();
}
#endif //TESTTOOLS_TESTEXCEL_H_
// testExcel.cpp
#include "stdafx.h"
#include "testExcel.h"
#include <iostream>
bool TEST_EXCEL::ExportExcel() {
TEST_EXCEL::com_t com;
TEST_EXCEL::wait_cursor_t wait;
try {
Excel::_ApplicationPtr excel;
HRESULT hr = excel.CreateInstance(__uuidof(Excel::Application));
if (FAILED(hr)) throw _com_error(hr);
auto workbook = excel->Workbooks->Add();
Excel::SheetsPtr sheets = workbook->GetWorksheets();
Excel::_WorksheetPtr sheet = sheets->GetItem((short)1);
sheet->Name = L"testExcelSheet1";
Excel::RangePtr range = sheet->Cells;
Excel::RangePtr titleRange = range->GetRange(range->GetItem(1, 1), range->GetItem(1, 4));
titleRange->Merge();
titleRange->PutItem(1, 1, L"testExcel");
titleRange->HorizontalAlignment = Excel::XlHAlign::xlHAlignCenter;
titleRange->BorderAround(Excel::XlLineStyle::xlContinuous, Excel::XlBorderWeight::xlThin, Excel::XlColorIndex::xlColorIndexNone);
sheet->Columns->AutoFit();
excel->PutDisplayAlerts(0, variant_t(false));
workbook->SaveAs(L"G:\\testExcel.xlsx", vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, Excel::XlSaveAsAccessMode::xlNoChange, Excel::XlSaveConflictResolution::xlLocalSessionChanges);
workbook->Close(true);
excel->Quit();
//open excel
ShellExecute(NULL, L"open", L"G://testExcel.xlsx", NULL, NULL, SW_SHOW);
}catch (_com_error& err) {
std::cout << "EXCEL error code:" << err.ErrorMessage() << std::endl;
return false;
}
std::cout << "EXCEL succeeded!" << std::endl;
return true;
}
|
Reference