• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь. Мобильный клиент для IOS находится в itunes по этой ссылке

Импорт из Word

alb

Well-known member
13.07.2005
212
0
#1
Приветствую.
Задача такая, есть форма. а в форме есть несколько RichText поля. Надо заполнять эти поля данными из документа ms word. причем данные должны вставляться сохранением формата и содержимого. то есть пользователь в документе вставить специальные метки а програма полностью копирует все что находиться между двумя метками(текст картинки итд итп) и вставляет в поле.

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

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

Veselinka

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

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

Hedg

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

Вложения

alb

Well-known member
13.07.2005
212
0
#5
Для: Hedg
Задача обратная.....
точно. по экспорту в word нашел достаточно инфы. а вот подходящий по сабжу пока только вот здесь и там тоже не решается полностью. пока ломаю голову как. вот было бы возможность в лотусе анализировать документ по символьно по объектам и возможность копировать и вставлять любую часть документа, и не только текст.
 
30.05.2006
1 345
11
#6
точно. по экспорту в word нашел достаточно инфы. а вот подходящий по сабжу пока только вот здесь и там тоже не решается полностью. пока ломаю голову как. вот было бы возможность в лотусе анализировать документ по символьно по объектам и возможность копировать и вставлять любую часть документа, и не только текст.
По-символьно и по-объектно? Можно. Лотусовые. А почему лотус должен уметь парсить чужие объекты закрытой проприетарной структуры? Это дело владельца объекта, Ворда.
 

alb

Well-known member
13.07.2005
212
0
#7
Constantin A Chervonenko
согласен, чужих объектах разбираться не должен.
а на счет лотусовских как это сделать? хелпе такого не нашел (возможно из за плохого знания английского). вот если в word-е скопировать определнный часть документа вместе содержимым и вставить в ртф поле. там есть возможность анализировать содержимое посимвольно и пообъектно? и как это осуществить. меня интересует возможность скопировать или вырезать часть ртф поле и отдать в другое ртф поле.
 
30.05.2006
1 345
11
#8
Constantin A Chervonenko
согласен, чужих объектах разбираться не должен.
а на счет лотусовских как это сделать?
С 6-ки объявился такой класс NotesRichTextNavigator и сопутствующие ему NotesRichTextRange, ..Section, ..Table Довольно мутные, не без глюков, однак работают. Это для background.
А через OLE и до UI достучаться можно, но тут у меня опыта нет.

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

alb

Well-known member
13.07.2005
212
0
#9
NotesRichTextNavigator и сопутствующие ему NotesRichTextRange
щя разбираюсь с ними. пока видимых результатов нет. или я недопонимаю или так и должно бытью чето никак не пойму как добраться от первого элемента до второго если они разные объекты. например сначало текст потом рисунок идет. как лотусу обяснить что после того как он нашел первый элемент надо взять последующий за ним рисунок а не искать следующий текстовый элемент.
 

alb

Well-known member
13.07.2005
212
0
#10
из ворда пока импортирую полность руами в одно поле. оттуда получить текст из ртф научился. но этого не достаточно так как остаются не текстовые элементы. как получить часть ртф поле и передать в другое ртф поле с помощью выше описанных класов?
кто нибудь сталкивался такой задачей?
 
30.05.2006
1 345
11
#11
..остаются не текстовые элементы. как получить часть ртф поле и передать в другое ртф поле с помощью выше описанных класов?
Там поддерживаются НЕ все возможные для richText объекты. Есть текст, секция, таблица, ссылка и.. почти все.
Сейчас БИМеры продвигают альтернативное направление - DXL - и rt-классы скорее всего забросили.
 
I

IsAvailable

#13
Код:
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 вставит...
А если по объектам идти... Может, в качестве меток использовать определенный набор символов, перебирать последовательно все параграфы в документе, выделять и копировать всё между параграфами, содержащими кодовый набор символов... Может прокатит такой вариант? Во всяком случае думаю, можно попробовать.
 

alb

Well-known member
13.07.2005
212
0
#14
Может, в качестве меток использовать определенный набор символов, перебирать последовательно все параграфы в документе,
кодовый набор символов? это принципально ведь ничем не отличается от символных меток. или я не так понял.
выделять и копировать всё между параграфами, содержащими кодовый набор символов
во во как раз это и нужно. только знании не хватает. если есть опыт может поделитесь
 
I

IsAvailable

#15
<!--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
(неформатированный текст)
 

alb

Well-known member
13.07.2005
212
0
#16
как я понял это соответствует одному абзацу в документе, или я ошибаюсь. если да то мне кажется здадача почти решена.
щя пойду попробую вот такую идею
получить количество параграфов(думаю как это сделать почерпну из хелпа)
получить текст первого(второго третего ...итд итп) прарграфа выше описанным способом. анализировать на предмет наличие меток.
выделить секцию
копировать в буфер и вставить в ртф поле.

если че потом отпишусь
 
I

IsAvailable

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

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