Рассмотрим работу с Microsoft Word в C++. Для того чтобы C++ мог работать с Word-ом нужна библиотека-парсер, где будут описаны способы взаимодействия с этой программой. Для примера рассмотрим работу в компиляторах Borland C++ Builder и MS Visual C++.
В BCB для взаимодействия с Word достаточно подключения библиотеки ComObj.hpp, она дает возможность работать с Ole, что позволяет принимать и посылать данные Word.
Пример такой программы:
1 2 3 4 5 6 7 8 9 |
{ Variant wrd; wrd = CreateOleObject("Word.Application"); wrd.OlePropertyGet("Documents").OleProcedure("Open", "D:\\word.doc"); wrd.OlePropertyGet("ActiveDocument").OlePropertyGet("Content").OleProcedure("InsertAfter","Привет"); wrd.OlePropertyGet("ActiveDocument").OleProcedure("Save"); wrd.OlePropertyGet("ActiveDocument").OleProcedure("Close"); } |
Поясним работу программы: посредством Ole создаётся объект (CreateOleObject()), это приложение Word. После этого объект wrd открывает файл (OleProcedure(«Open», «D:\\word.doc»). Затем в открывшийся файл word-а записывается слово «Привет».
Итак, функции OleProcedure, OlePropertyGet и OlePropertySet позволяют получить доступ ко всем объектам Word.
Похожая программа в MS Visual C++ содержит заголовочный файл Word.h и файл cpp. Рассмотрим их далее.
Файл Word.h для версии Word 2007. Для других версий — аналогично.
1 2 3 4 |
// Word.h #define Uses_MSO2007 #import "C:\\Program Files\\Microsoft Office\\Office12\\MSWORD.OLB" auto_rename |
cpp-файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include "stdafx.h" #include <conio.h> #include <iostream> #include "Word.h" using namespace System; using namespace std; int main(array<System::String ^> ^args) { ::CoInitialize(NULL); using namespace Word; _ApplicationPtr wrd(L"Word.Application"); wrd->Documents->Open(&_variant_t("D:\\word.doc")); wrd->ActiveDocument->Content->InsertAfter("Пока"); wrd->ActiveDocument->Save(); wrd->ActiveDocument->Close(); ::CoUninitialize(); } |
У меня нет buildera и мне говорят что с ним лучше не связыватся, а в VS это не работает так как у меня нет файлов заголовка. Че делать?
Менять немного файл примера для VS.
Начать можно с этого адреса
#import "C:\\Program Files\\Microsoft Office\\Office12\\MSWORD.OLB" auto_rename
Дальше менять в зависимости от версии VS и word-а.