2012-05-03 4 views
1

Может ли кто-нибудь сказать мне, можно ли выделить определенные слова (предоставленные номерами страниц и номерами строк) в текстовом документе (в основном DOCX)? Мой основной выбор - использовать Java. Если у вас есть какое-либо решение .Net, сообщите мне об этом.Программно выделить текст в MS Word с помощью java

Спасибо.

+0

.docx в основном только файл XML внутри архива, так что вы может открыть это и вручную проанализировать XML, если нет библиотеки для этого. – Tharwen

+0

Да, я это делаю. Но, когда я открыл XML для документа, я не нашел XML-тег для доступа к определенной странице или конкретному номеру строки. Мое намерение - перейти к определенному номеру строки на определенной странице, а затем выделить содержимое этой строки. – rajshekhar

+0

Пожалуйста, найдите ответ stcakoverflow, который предоставляется http://stackoverflow.com/questions/35419619/how-can-i-set-background-colour-of-a-run-a-word-in-line-or-a -paragraph-in-a-do – LearNer

ответ

1

Я не нашел в Java, но в .NET

object missObj = Missing.Value; 
      object path = @"D:\mydoc.docx"; 
      Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); 
      Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(ref path, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj); 
      foreach (Microsoft.Office.Interop.Word.Range range in doc.Words) 
      { 
       if (range.Text.Trim() == "the text") 
       { 
        range.HighlightColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdDarkYellow; 
        range.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdWhite; 
       } 
      } 

Источник: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/9fba8427-8b3c-44f2-b19f-92eb5108693b/

+0

Спасибо за ваш ответ. Я проверю его и вернусь к тебе тогда. – rajshekhar

+0

Я пробовал пример кода, и кажется, что он выделяет только слово, а не строку. Предположим, что я предоставляю «текст» как, он не будет выделять строку в документе. Но, если я предоставляю «текст», это подчеркивает. Есть ли что-нибудь еще? – rajshekhar

1

Да, это возможно в Java, но вы, вероятно, нужно реализовать это с помощью 3-х библиотек, Apache POI является хороший вариант, который является Java API для Microsoft Documents, предоставляет практически все функции и функции для управления DOC или DOCX из файлов.

http://poi.apache.org/

Что вы имели в виду «изюминкой» является пункт цвет фона и цвет текста выделения? Или что-то другое?

+0

Я уже некоторое время изучал POI Apache. Но я не понял, как сделать подсветку. На высоком уровне я хочу сделать следующее: 1) Перейдите к указанному номеру страницы, 2) Перейдите к указанному номеру строки, 3) Выделите строку. Возможно ли это с помощью POI? Если да, можете ли вы предоставить какой-нибудь фиктивный код? – rajshekhar

+0

Я хочу выделить строку (слова в строке, если быть более точным) на определенной странице. – rajshekhar

1

Да с помощью Apache POI, вы можете прочитать MS-Word документ и может делать операции по этому документу, как выделение текста и т.д.

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