Lotus notes 使用Lotusscript向IBM(Lotus)Notes富文本字段添加超过64KB的内容

Lotus notes 使用Lotusscript向IBM(Lotus)Notes富文本字段添加超过64KB的内容,lotus-notes,lotusscript,Lotus Notes,Lotusscript,我使用以下代码将.log(文本)文件的内容拉入Notes富文本字段,但如果数据量大于64 KB,则会失败: Dim io As Integer Dim text As String Dim fileSize As Single io = Freefile fileSize = 0 Open f For Input As io fileSize = Filelen( f ) If (fileSize > 65536) Then Msgbox "Sorry, but the fi

我使用以下代码将.log(文本)文件的内容拉入Notes富文本字段,但如果数据量大于64 KB,则会失败:

Dim io As Integer
Dim text As String
Dim fileSize As Single

io = Freefile
fileSize = 0

Open f For Input As io
fileSize = Filelen( f )

If (fileSize > 65536) Then
    Msgbox "Sorry, but the file " + f + " is > 64KB and cannot be rendered in the default rich text field.",, "Can't continue"
    Close #io
    Exit Sub
End If

While Not(Eof(io))
    Line Input #io, text
    Call uid.FieldAppendText("RT1", text + Chr(13) + Chr(10))
Wend

Close #io

我检查文件大小以避免错误(这是一个段落不能超过64KB的投诉)。那么,如何添加多个段落,以便显示超过64KB的数据呢?

插入换行符以创建大于64KB的段落。
但在操作富文本字段时,应该使用后端类。

插入换行符以创建大于64KB的段落。
但在操作富文本字段时,应该使用后端类。

使用NotesStream一次读取一行,然后使用NotesRichTextItem的AppendText和AddNewLine(1,True)

下面的subimportstreamport子例程未经测试,所以墨菲定律说这里的某个地方有一个很大的漏洞,但至少它可以编译!祝你好运

Option Public
Option Declare
%Include "lserr.lss"

%REM
    Function fstreamOpenFile(sPath As String, bTruncate As Boolean, bConfirmExists As Boolean) As NotesStream
<br>
    <b>Arguments</b>
    <blockquote><dl><dt>sPath</dt><dd>Filepath of the file to be opened/created.</dd>
    <dt>bTruncate</dt><dd>Boolean. True if file is for output and any existing file should be replaced rather than appended to.</dd>
    <dt>bConfirmExists</dt><dd>Boolean. If True, and the opened file is empty, then an ErrFileNotFound error will be thrown.</dd></dl></blockquote>
%END REM
Public Function fstreamOpenFile(sPath As String, bTruncate As Boolean, bConfirmExists As Boolean) As NotesStream
    Dim bFlag As Boolean
    Dim session As New NotesSession
    Dim stream As NotesStream

    If sPath = "" Then Error 13, "No path supplied."
    Set stream = session.Createstream()
    If Not stream.Open(sPath) Then Error ErrOpenFailed, {Could not open file at "} + sPath + {"}
    If bConfirmExists And stream.Bytes = 0 Then Error ErrFileNotFound, {File at "} + sPath + {" is missing or empty.} 
    If bTruncate Then Call stream.Truncate()
    Set fstreamOpenFile = stream
End Function

%REM
    Sub subImportStreamToRT(stream As NotesStream, rt As NotesRichTextItem)
    For each line of text in the stream, appends that text in its own paragraph.
    Assumes that the first line of text can simply be appended without first creating a new paragraph. (e.g. rt is a blank field or you've already added a new line before calling this function)
<br>
    <b>Arguments</b>
    <blockquote><dl><dt>stream As NotesStream</dt><dd>NotesStream containing text to be imported into a rich text file</dd>
    <dt>rt As NotesRichTextItem</dt><dd>NotesRichTextItem to import stream's text into.</dd></dl></blockquote>
%END REM
Sub subImportStreamToRT(stream As NotesStream, rt As NotesRichTextItem)
    If Not stream.IsEOS Then
        Do
            rt.AppendText stream.ReadText(STMREAD_LINE, EOL_ANY)
            If stream.IsEOS Then
                Exit Sub
            Else
                rt.AddNewLine 1, True
            End If
        Loop
    End If
End Sub
选项公共
选项声明
%包括“lserr.lss”
%雷姆
函数fstreamOpenFile(sPath作为字符串,bTruncate作为布尔值,bConfirmExists作为布尔值)作为NotesStream

论据 要打开/创建的文件的sPathFilepath。 bTruncateBoolean。如果文件用于输出,并且应替换而不是附加到任何现有文件,则为True。 b确认存在工具。如果为True,并且打开的文件为空,则将抛出ErrFileNotFound错误。 %终止REM 公共函数fstreamOpenFile(sPath作为字符串,bTruncate作为布尔值,bConfirmExists作为布尔值)作为NotesStream 作为布尔值的Dim bFlag 将会话设置为新便笺会话 暗淡无光 如果sPath=“”,则错误13,“未提供路径。” Set stream=session.Createstream() 如果不是stream.Open(sPath),则错误ErrOpenFailed,{无法打开位于“}+sPath+{”}的文件 如果bConfirmExists和stream.Bytes=0,则错误ErrFileNotFound,{File at“}+sPath+{”丢失或为空。} 如果是bTruncate,则调用stream.Truncate() 设置fstreamOpenFile=stream 端函数 %雷姆 Sub-ImportStreamPort(流为NotesStream,rt为NotesRichTextItem) 对于流中的每一行文本,将该文本追加到其自己的段落中。 假定可以简单地追加第一行文本,而无需先创建新段落。(例如,rt是一个空白字段,或者您在调用此函数之前已经添加了新行)
论据 stream As NotesStreamNotesStream包含要导入到富文本文件中的文本 rt作为NotesRichTextItemNotesRichTextItem导入流的文本。 %终止REM Sub-ImportStreamPort(流为NotesStream,rt为NotesRichTextItem) 如果不是stream.IsEOS,那么 做 rt.AppendText stream.ReadText(STMREAD\u行,下线\u任意) 如果stream.IsEOS那么 出口接头 其他的 rt.AddNewLine 1,True 如果结束 环 如果结束 端接头
使用

  • 将NotesStream变量设置为
    fstreampenfile(sFilePath,False,True)
  • 获取/创建NotesRichTextItem对象
  • 将NotesStream和NotesRichTextItem对象传递给SubImportStreamPort
  • 保存您的备忘文档
  • 请尝试并调试代码,因为SubImportStreamPort未经测试

  • 使用NotesStream一次读取一行,然后使用NotesRichTextItem的AppendText和AddNewLine(1,True)

    下面的subimportstreamport子例程未经测试,所以墨菲定律说这里的某个地方有一个很大的漏洞,但至少它可以编译!祝你好运

    Option Public
    Option Declare
    %Include "lserr.lss"
    
    %REM
        Function fstreamOpenFile(sPath As String, bTruncate As Boolean, bConfirmExists As Boolean) As NotesStream
    <br>
        <b>Arguments</b>
        <blockquote><dl><dt>sPath</dt><dd>Filepath of the file to be opened/created.</dd>
        <dt>bTruncate</dt><dd>Boolean. True if file is for output and any existing file should be replaced rather than appended to.</dd>
        <dt>bConfirmExists</dt><dd>Boolean. If True, and the opened file is empty, then an ErrFileNotFound error will be thrown.</dd></dl></blockquote>
    %END REM
    Public Function fstreamOpenFile(sPath As String, bTruncate As Boolean, bConfirmExists As Boolean) As NotesStream
        Dim bFlag As Boolean
        Dim session As New NotesSession
        Dim stream As NotesStream
    
        If sPath = "" Then Error 13, "No path supplied."
        Set stream = session.Createstream()
        If Not stream.Open(sPath) Then Error ErrOpenFailed, {Could not open file at "} + sPath + {"}
        If bConfirmExists And stream.Bytes = 0 Then Error ErrFileNotFound, {File at "} + sPath + {" is missing or empty.} 
        If bTruncate Then Call stream.Truncate()
        Set fstreamOpenFile = stream
    End Function
    
    %REM
        Sub subImportStreamToRT(stream As NotesStream, rt As NotesRichTextItem)
        For each line of text in the stream, appends that text in its own paragraph.
        Assumes that the first line of text can simply be appended without first creating a new paragraph. (e.g. rt is a blank field or you've already added a new line before calling this function)
    <br>
        <b>Arguments</b>
        <blockquote><dl><dt>stream As NotesStream</dt><dd>NotesStream containing text to be imported into a rich text file</dd>
        <dt>rt As NotesRichTextItem</dt><dd>NotesRichTextItem to import stream's text into.</dd></dl></blockquote>
    %END REM
    Sub subImportStreamToRT(stream As NotesStream, rt As NotesRichTextItem)
        If Not stream.IsEOS Then
            Do
                rt.AppendText stream.ReadText(STMREAD_LINE, EOL_ANY)
                If stream.IsEOS Then
                    Exit Sub
                Else
                    rt.AddNewLine 1, True
                End If
            Loop
        End If
    End Sub
    
    选项公共
    选项声明
    %包括“lserr.lss”
    %雷姆
    函数fstreamOpenFile(sPath作为字符串,bTruncate作为布尔值,bConfirmExists作为布尔值)作为NotesStream
    
    论据 要打开/创建的文件的sPathFilepath。 bTruncateBoolean。如果文件用于输出,并且应替换而不是附加到任何现有文件,则为True。 b确认存在工具。如果为True,并且打开的文件为空,则将抛出ErrFileNotFound错误。 %终止REM 公共函数fstreamOpenFile(sPath作为字符串,bTruncate作为布尔值,bConfirmExists作为布尔值)作为NotesStream 作为布尔值的Dim bFlag 将会话设置为新便笺会话 暗淡无光 如果sPath=“”,则错误13,“未提供路径。” Set stream=session.Createstream() 如果不是stream.Open(sPath),则错误ErrOpenFailed,{无法打开位于“}+sPath+{”}的文件 如果bConfirmExists和stream.Bytes=0,则错误ErrFileNotFound,{File at“}+sPath+{”丢失或为空。} 如果是bTruncate,则调用stream.Truncate() 设置fstreamOpenFile=stream 端函数 %雷姆 Sub-ImportStreamPort(流为NotesStream,rt为NotesRichTextItem) 对于流中的每一行文本,将该文本追加到其自己的段落中。 假定可以简单地追加第一行文本,而无需先创建新段落。(例如,rt是一个空白字段,或者您在调用此函数之前已经添加了新行)
    论据 stream As NotesStreamNotesStream包含要导入到富文本文件中的文本 rt作为NotesRichTextItemNotesRichTextItem导入流的文本。 %终止REM Sub-ImportStreamPort(流为NotesStream,rt为NotesRichTextItem) 如果不是stream.IsEOS,那么 做 rt.AppendText stream.ReadText(STMREAD\u行,下线\u任意) 如果stream.IsEOS那么 出口接头 其他的 rt.AddNewLine 1,True 如果结束 环 如果结束 端接头
    使用

  • 将NotesStream变量设置为
    fstreampenfile(sFilePath,False,True)
  • 获取/创建NotesRichTextItem对象
  • 将NotesStream和NotesRichTextItem对象传递给SubImportStreamPort
  • 保存您的备忘文档
  • 请尝试并调试代码,因为SubImportStreamPort未经测试

  • 基本上,它是AddNewline met的第二个参数