Столкнулся с такой задачей. Нужно прочитать программно заголовки из doc(docx), а именно Heading1, Heading2 ...
Пока решил так :
typedef std::pair<tstring, int> HeadingTextLevel_t;
typedef std::list<HeadingTextLevel_t> HeadingsList_t;
HeadingsList_t headingsList_;
Word::_ApplicationPtr spApp_(__uuidof(Word::Application));
Word::_DocumentPtr document_ = spApp_->Documents->Open(&_variant_t(_T("MyDocument.doc")));
long paragraphsCnt = document_->Paragraphs->Count;
Word::StylePtr styleHeading1 = document_->Styles->Item(&_variant_t(Word::wdStyleHeading1));
tstring styleHeading1LocalName = styleHeading1->NameLocal;
for(int i = 0; i < paragraphsCnt; ++i)
{
Word::ParagraphPtr paragraphPtr = document_->Paragraphs->Item(i);
Word::StylePtr paragraphStyle = paragraphPtr->GetStyle();
tstring localParagraphStyleName = paragraphStyle->NameLocal;
bool isBuiltIn = (paragraphStyle->BuiltIn == VARIANT_TRUE) ? true : false;
if(isBuiltIn && (styleHeading1LocalName == localParagraphStyleName))
headingsList_.push_back(std::make_pair(tstring(paragraphPtr->Range->Text), 1));
}
Но выглядит как то криво и не совсем правильно. Может кто то сталкивался c подобной задачей? Помогите please.
17.03.09 17:45: Перенесено модератором из 'C/C++' — Кодт