zoukankan      html  css  js  c++  java
  • 关于js读取rtf域的问题

    一、基础知识:

    1、常用ASCII码知识:

    chr(9)、chr(10)、chr(13)、chr(32)、chr(34)
    所有关于 ASCII码的表格:[url]http://www.asciitable.com/

    chr(13) 是一个回车
    Chr(10) 是个换行符
    chr(32) 是一个空格符
    9/34 是tab,未确定?

    2、lotus notes中的rtf域

    GetFormattedText(tabstrip, lineLength% )

    eg:GetFormattedText(false,0),对rtf域值中的tab不进行处理,并且默认80个字符换行。

    我们常用如下代码的方式来读取rtf域的值

    Dim doc As NotesDocument
    Dim rtitem As Variant
    Dim plainText As String
    Dim fileNum As Integer
    '...set value of doc...
    Set rtitem = doc.GetFirstItem( "Body" )
    If ( rtitem.Type = RICHTEXT ) Then
      plainText = rtitem.GetFormattedText( False, 0 )
    End If

    二、遇到的问题

    今天在读取rtf域的值,并通过js代码读取到excel中的时候报错:“未结束的字符串常量”。

    相关代理中的代码如下:

    Print |<script language="Javascript">|
        Print |alert("|+doc.rtfDecription+|");|
        Print |</script>|

    其中rtfDecription 为rtf域。

    当此域中的值为简单的文本(eg,123,dsa)时,不存在这种问题。当域值包含换行等字符的时候,就会报错“未结束的字符串常量”。

    三、处理办法

    以下示例代码针对相关字符(回车和换行)进行处理。

    Sub Initialize
        On Error Goto errHandler
        Dim s As NotesSession
        Dim doc As NotesDocument
        Set s = New NotesSession
        Set doc = s.DocumentContext
        Dim rtitem As Variant
        Dim plainText As String
        Dim vTextArea As Variant
        Set rtitem=doc.GetFirstItem("wahaha")
        If ( rtitem.Type = RICHTEXT ) Then
            plainText = rtitem.GetFormattedText( False, 0 )
        End If
        Dim strTemp As String
        If (Instr(plainText,Chr(13))>0) Then
            vTextArea = Split(plainText,Chr(13))
            strTemp =""
            strTemp = Join(vTextArea," ")
        End If       
        If (Instr(strTemp,Chr(10))>0) Then
            vTextArea = Split(strTemp,Chr(10))
            strTemp =""
            strTemp = Join(vTextArea," ")
        End If       
        'Method 2
        'vTextArea = Evaluate(|@ReplaceSubstring(@Text(wahaha);@NewLine;" ")|,doc)
        'Msgbox vTextArea(0)
        Print |<script language="Javascript">|
        Print |alert("|+strTemp+|");|
        Print |</script>|
        Exit Sub
    errHandler:
        Msgbox Error & Error$ & Cstr(Erl)
        Exit Sub
    End Sub

    输入值:abc

    def

    afs

    输出值:abc def afs

    四、总结

    前台代码(js代码)和后台代码(LotusScript、java)尽量分开写。

  • 相关阅读:
    js中的面向对象part2
    js中值类型和引用类型的区别
    js中三大引用类型
    js中的重点
    html和css区别
    面向对象part1
    null和undefined的区别
    前端面试题js篇
    行内元素和块级元素的区别
    学习网站
  • 原文地址:https://www.cnblogs.com/hannover/p/2511419.html
Copyright © 2011-2022 走看看