lotus notes 数据库中附件的批量导出

Public Class getAllNotesEmObject
‘-------------------------------------------------------------------
‘******功能: 可以在视图中直接提取文档中RTF域附件的类 *******
‘-------------------------------------------------------------------
    Private filenum As Integer
    Private folder As String
    Private rtfField As String
    Private fileType As String
    Public doc As Notesdocument
‘Private writeStr As String
‘=============设置文件夹路径==============
    Sub setFolder(f As String)
        folder=f
    End Sub
‘=============设置RTF域名称===============
    Sub setRtfFieldName(rf As String)
        rtfField=rf
    End Sub
‘=============设置doc===============
    Sub setDoc(document As Variant)
        Set doc=document
    End Sub
    Sub getObject(wStr1 As String)
‘------------------------------
‘用法:getObject(域名A)
‘备注:域名A作为子文件夹存放不同的文件,注意各个文档的A要不同才不致于覆盖
‘------------------------------
        Dim s As New Notessession
        Dim db As Notesdatabase
        
        Dim eobject As Notesembeddedobject
        Dim rtfitem As Variant
        Dim item1,item2 As notesitem
        Dim tempName As String
        Dim exportName As String
        Dim exportLastName As String
        Dim i,j,k ,m As Integer
        filenum=Freefile()
        k=0 ‘用来记录错误个数
        m=1 ‘用来记录同名的文件数,默认为1
        Set db=s.GetDatabase("d23dbl35","dbom\caiyi\chinao1.nsf")
        
        If folder="" Then Exit Sub
        On Error Resume Next
‘直接建立目录
        Mkdir folder
        
        Set item1=doc.getfirstitem(wStr1) ‘子文件夹
        writeStr=item1.values(0)
        Print "正在提取["+writeStr+"]的附件"
        Set rtfitem=doc.getfirstitem(rtfField) ‘rtfField:RTF域的域名
        j=0
        Mkdir folder+"\"+writeStr
        Forall ob In rtfitem.Embeddedobjects
‘=========2005/07/07=============
‘ 修改为以附件的名称直接拆离即可
            ob.Extractfile(folder+"\"+writeStr+"\"+ob.name)
            exportName=folder+"\"+writeStr+"\"+ob.name
            
            If exportName=exportLastName Then
                m=m+1
                ob.Extractfile(Left(exportName,Len(exportName)-4)+"("+Cstr(m)+")"+Right(ob.name,4))
            Else
                m=1
                ob.Extractfile(exportName)
            End If
            
            exportLastName=exportName
            
        End Forall
‘==========写入错误日志===============
        If Err=92 Then
            Open folder+"\faillog"+Cstr(Today)+".txt" For Output As fileNum
            Write #filenum%,writeStr+"没有附件"+newline
            k=1
        End If
‘===============================
        Err=0
        
        Close filenum
        If k=1 Then
            k="部分有错误,请查看文件夹中faillog"+Cstr(Today)+".TXT的记录"
        Else
            k=""
        End If
        Print "提取完毕!请到"+folder+"文件夹中查找。"+k
        
    End Sub
End Class


Sub Initialize
    Dim s As New Notessession
    Dim db As Notesdatabase
    Dim doccol As Notesdocumentcollection
    Dim doc As Notesdocument
    Dim folder As String
    Set db=s.GetDatabase("d23dbl35","dbom\caiyi\chinao1.nsf")
    folder=Inputbox$("请填写保存路径,如C:\TEMP或C:","系统提示","c:\temp")
    If Trim(folder)="" Then
        Msgbox "保存路径有误,请重新运行程序",16+64,"系统提示"
    Else
        Set doccol=db.AllDocuments ‘此方法仅能用于代理方能正常运行。
        If doccol.count>0 Then
            Set doc=doccol.Getfirstdocument()
            For i=1 To doccol.count
                Dim nToE As New getAllNotesEmObject ‘实例化自定义提取附件类
                nToE.setRtfFieldName("Body") ‘定义附件RTF域
                nToE.setfolder(folder) ‘定义保存路径
                Set nToE.doc=doc ‘定义要提取附件的DOC
                nToE.getObject("OCRM") ‘使用自定义类中提取附件方法
                Set nToE=Nothing ‘释放内存
                
                Set doc=doccol.getnextdocument(doc)
                
            Next
        End If
    End If 
End Sub

再建一操作,写上:
@Command([ToolsRunMacro];"getEmObject")
然后在视图中使用此按键,即可从视图上直接下载附件。

出处:  http://zwm136200.blog.163.com/blog/static/428967962011110114926539/

时间: 2024-08-07 21:19:28

lotus notes 数据库中附件的批量导出的相关文章

lotus notes 数据库中附件的批量导出 2

Lotus Notes 数据库中附件的批量导出 Lotus Notes 数据库是一种文档型数据库,其中文档的富文本域中往往嵌入许多附件(如 Word 文档.PDF 文档.Excel 文档等).用户时常需要将这些附件导出到其他系统中进行使用处理.然而当需要导出许多文档中的附件时,只能手动逐个打开各个文档并将附件导出,然后再将附件导入到其他系统中,那么,当附件数量很大时则会大大降低效率.本文从用户角度出发,分析了若干附件批量导出的需求并给出了相应的解决方案. 引言 Notes 数据库是一种文档型数据

用C# ASP.net将数据库中的数据表导出到Excel中

需要用到组件GridView和一个button即可. 给GridView添加一个数据源, 选择你想要的数据库中的表的字段,添加成功后GridView中就显示数据. 再添加一个button,双击控件添加相对应的功能代码 功能代码如下: protected void Button1_Click(object sender, EventArgs e) { string FileName = "得分表 " + DateTime.Now + ".xls"; Response.

如何实现EndNote中的PDF批量导出

如果在EndNote数据库中已建立大量的参考文献,且每条文献都有PDF文件对应,怎样将需要的某十几条甚至几十条参考文献对应的PDF文件从数据库导出另存在新建的文件夹 1. 按住“Ctrl”键,逐条选中所有需要导出pdf的文献. 2. 右键,“Copy Reference To”—“New Library...”  选中路径保存在电脑桌面,这样就生成了一个文件“My EndNote Library”和一个文件夹“My EndNote Library.Data” 3. 打开文件夹“My EndNot

Android数据库中数据文件的导出与查看

当Android开发过程中涉及到数据库的操作,我们通常需要将App的数据库文件(即*.db文件)导出查看,以验证对数据库的增删改查是否正确. 由于真机在没有root的情况下,没有权限访问受保护的数据存储区域,所以为了简单起见,可以选择在模拟器上进行数据文件的导出工作.本文用来验证 一个ContentProvider示例是否成功的进行了数据库插入操作,开发工具为Eclipse ADT(Android API 18),详细的步骤如下:  (1)首先New一个模拟器,具体步骤如下图所示(红框标出操作选

SQL大圣之路笔记——把数据库中表里的数据导出成Excel(Copy时,会因分隔符问题导致许多数据存放在一个单元格中)

1.选中DB, 右击选择"Tasks",选中"Export Data" 点击. 2.点击"Next", Authentication 选择使用 "Windows 用户名认证" or "SQL Server 用户名,密码认证",点击"Next".    3.保存文件格式:"Excel", 选择保存文件的路径.Excel 版本,点击"Next".-&g

安装sqoop,并将Mysql中的表数据导出到HDFS下的文本文件

首先是安装mysql数据库.使用 sudo apt-get install mysql-server命令即可安装完成.然后进行表的创建和插入数据.如图. 然后下载sqoop和连接mysql数据库的jar包.接下来是安装sqoop.首先是配置sqoop-env.sh文件.如图. 然后将config-sqoop文件中不需要检查的注释掉.如图. 然后接下来是将sqoop-1.4.4.jar包和连接mysql的jar包copy到hadoop目录下的lib目录中,同时把hadoop-core-1.2.1.

把QQ聊天记录插入数据库中

最近在做毕设,其中一个环节是分析qq聊天记录,在分析之前需要先把qq聊天记录导出,然后存入数据库中,qq聊天记录导出后是文本文档,导出方式: 1.登录qq后,点击任意一个好友,查看与他的聊天记录,点击聊天记录界面的小喇叭图标. 2.点击小喇叭图标后就可以选择自己要导出的聊天记录了,在要导出的人名或者群名上右键单击,选择导出聊天记录,导出格式为文本文档. 导出的文本文档格式性非常强,看下图: 我们大致分析一下这个格式,最上面那几行说明性的文字直接删去,主要看聊天记录部分,先是日期,然后一个空格,然

MySQL数据库批量修改数据库中的表

问题:今天工作遇到这样一个问题,需要把数据库中的所有表,每个表加入四个字段,如果表少,我们可以手动去添加或者修改,如果是成千上百万张表的话,我们如何去修改,现记录下来. 解决方法: 找到数据库的建模资料,就是PDM文件.发个截图 下面我们就要用一个工具了,就是powerdesign,我们将用这个工具批量修改数据库表中的字段.需要用vb脚本. 我们打开powerdesign,点开脚本运行栏,方法,工具--如图 点击后的运行脚本框如下写好的脚本放在上面运行即可. vb语法 Option Explic

Extjs4.0+HSSFWorkbook+SpringMVC实现将数据库中的记录导出到本地Excel格式

Extjs4.0+HSSFWorkbook+SpringMVC实现将数据库中的记录导出到本地Excel格式 自己封装的JS类Share.js var Share = {}; Share.ExportByExcel = function(url) { var appWindow = Share.getWin(); appWindow.open(url); appWindow.focus(); }; 调用的前端js buttons : [{ text : '查询', handler : queryS