[Lotus]关于js读取rtf域的问题[改进版]

[备注]这两天刚对原文做了改进,正好大哥钟隆也提了中肯的建议,修改后整理如下。

一、基础知识:

1、常用ASCII码知识:

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

chr(13) 是一个回车符,Chr(10) 是个换行符,chr(32) 是一个空格符,chr(34)是",chr(9)是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

    'Method1
    plainText=Replace(plainText,Chr(34),"'")
    plainText=Replace(plainText,Chr(13),"/n")
    plainText=Replace(plainText,Chr(10),"")

    '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

四、总结

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值