2013-06-17 3 views
0

Я использую SWT OLE api для редактирования документа Word в RCP Eclipse. Я читал статьи о том, как читать свойства из активного документа, но теперь у меня возникла проблема с коллекциями, такими как разделы.Как перечислить элементы коллекции с помощью Word Ole Automation

Я хотел бы получить только часть тела моего документа, но я не знаю, что делать с моим объектом раздела, который является объектом IDispatch. Я читал, что должен использоваться метод item, но я не понимаю, как это сделать.

ответ

1

Я нашел решение, поэтому я поделюсь с вами :)

Вот пример кода, чтобы перечислить все пункты активного документа редактора слова:

OleAutomation active = activeDocument.getAutomation(); 
    if(active!=null){ 
    int[] paragraphsId = getId(active, "Paragraphs"); 
    if(paragraphsId.length > 0) { 
     Variant vParagraphs = active.getProperty(paragraphsId[0]); 
     if(vParagraphs != null){ 
      OleAutomation paragraphs = vParagraphs.getAutomation(); 
      if(paragraphs!=null){ 
       int[] countId = getId(paragraphs, "Count"); 
       if(countId.length > 0) { 
        Variant count = paragraphs.getProperty(countId[0]); 
        if(count!=null){ 
         int numberOfParagraphs = count.getInt(); 
         for(int i = 1 ; i <= numberOfParagraphs ; i++) { 
          Variant paragraph = paragraphs.invoke(0, new Variant[]{new Variant(i)}); 
          if(paragraph!=null){ 
           System.out.println("paragraph " + i + " added to list!"); 
           listOfParagraphs.add(paragraph); 
          } 
         } 
         return listOfParagraphs; 
        } 
       } 
      } 
     } 
    } 
+1

Большое спасибо ! Я использовал перечисление Outlook ** Session.Accounts ** и не знал, как это сделать. Это был единственный ресурс в Интернете, который мне помог. - По крайней мере, в моем случае перечисление начинается с целочисленного значения ** 1 ** вместо ** 0 ** - и помимо использования целочисленных значений в качестве ключей, имена учетных записей как строки также работают. – fjf2002

+0

Вы правы :) Коллекции, кажется, всегда начинаются с индекса 1. Я обновил свой код фрагмента. – G4ry

Смежные вопросы