Импорт из Word

Тема в разделе "Lotus - Программирование", создана пользователем alb, 29 апр 2007.

  1. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    Приветствую.
    Задача такая, есть форма. а в форме есть несколько RichText поля. Надо заполнять эти поля данными из документа ms word. причем данные должны вставляться сохранением формата и содержимого. то есть пользователь в документе вставить специальные метки а програма полностью копирует все что находиться между двумя метками(текст картинки итд итп) и вставляет в поле.

    з.ы. форма это описывает тестовое задание. вопрос и варианты ответов. в документе word может быть неограниченное число вопросов и варианты ответов на них.

    как это решить в какую сторону копать. просто с такими вещами не сталкивался. если кто встречался схожей задачей примерчик кода плиз.
     
  2. Veselinka

    Veselinka Гость

    На языке формул есть команда (не вспомню навскидку), которая в UI режиме делает импорт файла выбранного в РТФ поле.
    Это аналог менюшного File->Import
    Думаю она не подойдет в данном контексте.

    Мысли вслух....:
    Наверное я бы написала код (на лотус-скрипте или вообще на любом другом внешнем языке с использованием внешних готовых библиотек для работы с форматом ворда через ОЛЕ или еще как-либо, и вызывала бы его на переданном файле), который бы парсил вордовый файл по меткам, преобразовывал бы его в набор файлов и потом уже средствами лотуса импортировал в РТФ эти сгенеренные файлики.
     
  3. Hedg

    Hedg Гость

    Вот пример, как заполнять Word документ на основе шаблона, откуда качал уже не помню. Сам не пользовался
     

    Вложения:

  4. Veselinka

    Veselinka Гость

    Для: Hedg
    Задача обратная.....
     
  5. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    точно. по экспорту в word нашел достаточно инфы. а вот подходящий по сабжу пока только вот здесь и там тоже не решается полностью. пока ломаю голову как. вот было бы возможность в лотусе анализировать документ по символьно по объектам и возможность копировать и вставлять любую часть документа, и не только текст.
     
  6. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    По-символьно и по-объектно? Можно. Лотусовые. А почему лотус должен уметь парсить чужие объекты закрытой проприетарной структуры? Это дело владельца объекта, Ворда.
     
  7. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    Constantin A Chervonenko
    согласен, чужих объектах разбираться не должен.
    а на счет лотусовских как это сделать? хелпе такого не нашел (возможно из за плохого знания английского). вот если в word-е скопировать определнный часть документа вместе содержимым и вставить в ртф поле. там есть возможность анализировать содержимое посимвольно и пообъектно? и как это осуществить. меня интересует возможность скопировать или вырезать часть ртф поле и отдать в другое ртф поле.
     
  8. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    С 6-ки объявился такой класс NotesRichTextNavigator и сопутствующие ему NotesRichTextRange, ..Section, ..Table Довольно мутные, не без глюков, однак работают. Это для background.
    А через OLE и до UI достучаться можно, но тут у меня опыта нет.

    ЗЫ: к Ворду тоже через ОЛЕ/КОМ доступаться надо, видимо
     
  9. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    щя разбираюсь с ними. пока видимых результатов нет. или я недопонимаю или так и должно бытью чето никак не пойму как добраться от первого элемента до второго если они разные объекты. например сначало текст потом рисунок идет. как лотусу обяснить что после того как он нашел первый элемент надо взять последующий за ним рисунок а не искать следующий текстовый элемент.
     
  10. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    из ворда пока импортирую полность руами в одно поле. оттуда получить текст из ртф научился. но этого не достаточно так как остаются не текстовые элементы. как получить часть ртф поле и передать в другое ртф поле с помощью выше описанных класов?
    кто нибудь сталкивался такой задачей?
     
  11. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Там поддерживаются НЕ все возможные для richText объекты. Есть текст, секция, таблица, ссылка и.. почти все.
    Сейчас БИМеры продвигают альтернативное направление - DXL - и rt-классы скорее всего забросили.
     
  12. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    это плохо, DXL так DXL
    пойду почитаю про них
     
  13. IsAvailable

    IsAvailable Гость

    Код (Text):
    Sub Click(Source As Button)
    Dim wApp, wDoc, wSelect As Variant
    Dim doc As NotesDocument
    Dim ws As New NotesUIWorkspace
    Dim pathto As String
    Dim temp As Variant
    Dim uidoc As NotesUIDocument

    Set doc = ws.CurrentDocument.Document
    temp = ws.OpenFileDialog(0,"Title","","c:\")
    pathto = temp(0)
    Set wApp = createObject("Word.Application")
    wApp.Visible = True
    Set wDoc = wApp.Documents.Open (pathto)
    wApp.ActiveDocument.Select
    Set wSelect = wApp.Selection
    wSelect.Copy
    Set uidoc = ws.CurrentDocument
    Call uidoc.GotoField("Body")
    Call uidoc.Paste
    End Sub
    Ну этот код полностью документ скопирует и в РичТекстПоле Body вставит...
    А если по объектам идти... Может, в качестве меток использовать определенный набор символов, перебирать последовательно все параграфы в документе, выделять и копировать всё между параграфами, содержащими кодовый набор символов... Может прокатит такой вариант? Во всяком случае думаю, можно попробовать.
     
  14. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    кодовый набор символов? это принципально ведь ничем не отличается от символных меток. или я не так понял.
    во во как раз это и нужно. только знании не хватает. если есть опыт может поделитесь
     
  15. IsAvailable

    IsAvailable Гость

    <!--QuoteBegin-alb+4:05:2007, 07:51 -->
    <span class="vbquote">(alb @ 4:05:2007, 07:51 )</span><!--QuoteEBegin-->от символных меток
    [snapback]64570" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ну да в общем-то... Типа, разделять данные какой-нить строкой, наподобии: "!===+++===!"
    И соответственно искать параграф, который содержит в точности эту строку.

    Вообще, я бы посоветовал основательно покопаться в VB хэлпе в Ворде... Эти ведь методы в том или ином виде могут быть доступны и из Лотуса.

    Например, вот выдержка интереная...

    The following example returns a Range object that refers to the second through fourth paragraphs in the active document

    Set aRange = ActiveDocument.Range( _
    Start:=ActiveDocument.Paragraphs(2).Range.Start, _
    End:=ActiveDocument.Paragraphs(4).Range.End)


    Чтобы текст получить: Selection.Text
    (неформатированный текст)
     
  16. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    как я понял это соответствует одному абзацу в документе, или я ошибаюсь. если да то мне кажется здадача почти решена.
    щя пойду попробую вот такую идею
    получить количество параграфов(думаю как это сделать почерпну из хелпа)
    получить текст первого(второго третего ...итд итп) прарграфа выше описанным способом. анализировать на предмет наличие меток.
    выделить секцию
    копировать в буфер и вставить в ртф поле.

    если че потом отпишусь
     
  17. IsAvailable

    IsAvailable Гость

    Для: alb
    ActiveDocument.Paragraphs - это массив всех параграфов активного документа.
    ActiveDocument.Paragraphs(i) - это i-ый параграф в документа.
    По сути, вроде бы это обычный массив объектов.

    Да - идея такая у меня была. Попробуй. Глядишь и получится что-нить :)
     
Загрузка...

Поделиться этой страницей