• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Импорт из Word

  • Автор темы alb
  • Дата начала
A

alb

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

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

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

Veselinka

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

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

Hedg

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

Вложения

  • wordintegration.zip
    5,1 КБ · Просмотры: 228
A

alb

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

alb

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

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

alb

NotesRichTextNavigator и сопутствующие ему NotesRichTextRange
щя разбираюсь с ними. пока видимых результатов нет. или я недопонимаю или так и должно бытью чето никак не пойму как добраться от первого элемента до второго если они разные объекты. например сначало текст потом рисунок идет. как лотусу обяснить что после того как он нашел первый элемент надо взять последующий за ним рисунок а не искать следующий текстовый элемент.
 
A

alb

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

alb

это плохо, DXL так DXL
пойду почитаю про них
 
I

IsAvailable

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

alb

Может, в качестве меток использовать определенный набор символов, перебирать последовательно все параграфы в документе,
кодовый набор символов? это принципально ведь ничем не отличается от символных меток. или я не так понял.
выделять и копировать всё между параграфами, содержащими кодовый набор символов
во во как раз это и нужно. только знании не хватает. если есть опыт может поделитесь
 
I

IsAvailable

Ну да в общем-то... Типа, разделять данные какой-нить строкой, наподобии: "!===+++===!"
И соответственно искать параграф, который содержит в точности эту строку.

Вообще, я бы посоветовал основательно покопаться в 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
(неформатированный текст)
 
A

alb

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

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

IsAvailable

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!