DXL: экспорт части документа

  • Автор темы Автор темы oleg7
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
O

oleg7

помогите
есть кнопка:
я сохраняю письмо на локальную машину:
Код:
	Dim session As New NotesSession
Dim db As NotesDatabase
Dim strm As NotesStream
Dim doc As NotesDocument
Dim col As Notesdocumentcollection
Dim i As Integer
Dim ex As NotesDXLExporter
i = 0
Set db = session.CurrentDatabase
Set col=db.UnprocessedDocuments
Set doc = col.GetFirstDocument
While i < db.UnprocessedDocuments.Count
name="C:\text\1" & ".txt"
Call strm.Open(name)
Call strm.Truncate
Set ex = session.CreateDXLExporter(doc ,strm)
i = i + 1
Call ex.Process
Call strm.Close
Set doc=col.GetNextDocument(doc)
Wend
документ сохранен. А как его перенести не весь, а лишь несколько определенных строк?
 
Гы... а какие именно строки надо?
Берешь нужное поле... ищешь в нем то что тебе надо.. а потом записываешь
Call strm.WriteText( то что тебе надо , EOL_CRLF)
 
Код:
	Dim session As New NotesSession
Dim db As NotesDatabase
Dim strm As NotesStream
Dim doc As NotesDocument
Dim col As Notesdocumentcollection
Dim DXLExporter As NotesDXLExporter
Dim XSLTransformer As NotesXSLTransformer
Dim ssheet As NotesStream
Set db = session.CurrentDatabase
Set col = db.UnprocessedDocuments
Set ssheet = ThisSession.CreateStream()
Call ssheet.Open("xsl_Name")
Set DXLExporter = session.CreateDXLExporter()
Set XSLTransformer = session.CreateXSLTransformer()
Call XSLTransformer.SetStylesheet(ssheet)
Call XSLTransformer.SetInput(DXLExporter)
Set doc = col.GetFirstDocument
Do Until doc Is Nothing
name="C:\text\" & doc.UniversalID & ".txt"
Call strm.Open(name)
Call strm.Truncate
Call DXLExporter.SetInput(doc)
Call XSLTransformer.SetOutput(strm)				
DXLExporter.Process
Call strm.Close
Set doc = col.GetNextDocument(doc)
Loop
 
nvy
спасибо большое за предоставленный код, сохраняется на комп документ
Но все же так и не справилься...
как можно не весь документ сохранять, а только например ФИО, того кто отправил, Тему сообщения, и т.д...
Код:
		file="C:\test\Docum" & ".txt"
Call strm.Open(file)
' если правильно понимаю, то здесь надо из doc взять Subject	и SendTO			
Call strm.Truncate
а как потом вообще надо указать, что не все записать в документ, а только взятые части из doc?
 
Call ssheet.Open("xsl_Name") - здесь открывается файл xsl-преобразования. В принципе можно взять и из настроечного документа (да откуда угодно). Учите/гуглите xsl. На затравку:
Код:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ldn="http://www.lotus.com/dxl">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:element name="tr">
<xsl:element name="td">
<xsl:value-of select="//ldn:item[@name='Form']"/>
</xsl:element>
<xsl:element name="td">
<xsl:value-of select="//ldn:item[@name='$ConflictAction']"/>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
 
nvy почему бы не выгрузить всю коллекцию - и её парсить, а не каждый док?
 
lmike
От задачи зависит. Если коллекция большая, может в памяти не уместиться.
 
nvy
спасибо большое за предоставленный код, сохраняется на комп документ
Но все же так и не справилься...
как можно не весь документ сохранять, а только например ФИО, того кто отправил, Тему сообщения, и т.д...
Код:
		file="C:\test\Docum" & ".txt"
Call strm.Open(file)
' если правильно понимаю, то здесь надо из doc взять Subject	и SendTO			
Call strm.Truncate
а как потом вообще надо указать, что не все записать в документ, а только взятые части из doc?
Ну да... берешь значение поля/полей собираешь в строку и записываешь

Добавлено: lmike, nvy
Не понимаю... зачем такие сложности?
Или по вашему возиться с xml, который может не работать на всех машинах (зависит конечно от задачи), писать xsl-шаблон... потом перебирать результат (если вдруг понадобится) проще чем перебирать доки и сразу записывать то что надо? :what?:
 
Set exporter = session.CreateDXLExporter
exporter.RestrictToItemNames = "Subject"
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab