大家好,才是真的好。
有些需求总是很小众,但是还是被人需要。
Notes从来可以满足这种需求。
其实使用Notes客户机可以直接打开嵌入到文档中的附件,例如Txt文本、Word或PDF附件等。
不过有人提出,能否直接从Notes文档中的附件读取数据,而不是先存储到磁盘,然后再打开,毕竟Notes中的ECL(执行控制列表)以及操作系统上的权限,有时候并不允许你这样。
Notes的特点就是想你所想,能你所想。
因此其实你可以使用LotusSript代码来实现这一点,涉及到其他文档,我们可以使用LotusSript中的DXL——你要是不清楚DXL,可以参考《了不起的DXL!》,我们公众号里啥内容都有涉及。
利用DXL,你可以把文档导出为Base64编码的数据对象,然后再通过NotesStream类来转换为指定字符集的文档。
更加幸运的是,我们不用写这些复杂过程的代码,而是有人已经帮我们写好。
在我们公众号的后台回复“读取附件”就可以下载到上图的文本文件,里面有一个LotusScript脚本库。
我们这里举一个最为简单的例子,就是读取文档中的txt文本附件。
首先确保我们有一个Notes库,里面有个视图叫做"All",然后存储有Notes文档,这里标题为“test1”,里面有个附件名称为“Notes测试.txt”,代码样例如下:
Sub Click(Source As Button)
Dim ses As New NotesSession, db As NotesDatabase, doc1 As NotesDocument, vu As NotesView
Set db = ses.Currentdatabase
Set vu = db.getview("all")
Set doc1 = vu.Getdocumentbykey("test1", True)
Dim ar As New AttachmentReader(doc1)
Dim ara As ARAttachment, contents$
Set ara = ar.item("Notes测试.txt")
contents = ara.text("UTF-8").readtext
Msgbox "文件内容: " & contents
End Sub
上述代码中,利用了脚本库中的Text(char_set$),返回文本文件中的文本,使用指定的字符集解释内容。
当我们执行的时候就能看到Notes对话框中提示的文本信息,如下图:
更详细的介绍请参考站点:https://lotusscript.torknado.com/blog/read-attachment-files-without-writing-to-disk/
今天我们就介绍到这里吧。更多精彩文章可关注微信公号:协作者