Работа с стилями Word
От: dubankov Украина  
Дата: 17.03.09 12:32
Оценка:
Столкнулся с такой задачей. Нужно прочитать программно заголовки из 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++' — Кодт
word c++ style
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.