Export

從 Lotus Notes 數據庫中導出數據

  • January 15, 2021

我正在尋找一種工具,希望是低成本或免費的,以幫助我將 Lotus Notes 數據庫(不是 Lotus Notes 郵件文件!)導出為任何格式。CSV/Excel 等。

我還需要能夠提取數據庫中的附件。它們都是 Word 文件。

我找到了一個名為 DetachIt 的軟體——但它的高昂許可成本使其遙不可及。

謝謝!

這是我多年前編寫的用於將數據導出到 Excel 的免費工具: Export to Excel 2.0

另外,我編寫了一些程式碼來從電子郵件中提取附件,並且該程式碼可以適用於其他數據庫

(Declarations)
Dim sDir As String
Dim s As NotesSession
Dim w As NotesUIWorkspace
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument

Sub Initialize

Set s = New NotesSession
Set w = New NotesUIWorkspace 
Set db = s.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
Dim rtItem As NotesRichTextItem
Dim RTNames List As String
Dim DOCNames List As String
Dim itemCount As Integer
Dim sDefaultFolder As String
Dim x As Integer
Dim vtDir As Variant
Dim iCount As Integer
Dim j As Integer
Dim lngExportedCount As Long
Dim attachmentObject As Variant

x = Msgbox("This action will extract all
attachments from the " & Cstr
(dc.Count) & _
" document(s) you have selected, 
and place them into the folder of your 
choice." & _
Chr(10) & Chr(10) & "Would you like 
to continue?", 32 + 4, "Export 
Attachments")
If x <> 6 Then Exit Sub 

sDefaultFolder = s.GetEnvironmentString
("LPP_ExportAttachments_DefaultFolder")
If sDefaultFolder = "" Then sDefaultFolder = "F:"
vtDir = w.SaveFileDialog( False, "Export 
attachments to which folder?", "All 
files|*.*", sDefaultFolder, "Choose 
Folder and Click Save")
If Isempty(vtDir) Then Exit Sub
sDir = Strleftback(vtDir(0), "\")
Call s.SetEnvironmentVar
("LPP_ExportAttachments_DefaultFolder", sDir) 

While Not (doc Is Nothing)

 iCount = 0
 itemCount = 0
 lngExportedCount = 0
 Erase RTNames
 Erase DocNames

 'Scan all items in document
 Forall i In doc.Items

  If i.Type = RICHTEXT Then
   Set rtItem = doc.GetfirstItem(i.Name)
   If Not Isempty(rtItem.EmbeddedObjects) 
Then
    RTNames(itemCount) = Cstr(i.Name)
    itemCount = itemCount +1
   End If
  End If

 End Forall  

 For j = 0 To itemCount-1 
  Set rtItem = Nothing
  Set rtItem = doc.GetfirstItem(RTNames(j))
  Forall Obj In rtItem.EmbeddedObjects
   If ( Obj.Type = EMBED_ATTACHMENT ) 
Then
    Call ExportAttachment(Obj)
    Call Obj.Remove
    Call doc.Save( False, True ) 
'creates conflict doc if conflict exists
   End If 
  End Forall 
 Next

 'Scan all items in document
 Forall i In doc.Items

  If i.Type = ATTACHMENT Then

   DOCNames(lngExportedCount) = 
i.Values(0)
   lngExportedCount = lngExportedCount + 1

  End If

 End Forall

 For j% = 0 To lngExportedCount-1 
  Set attachmentObject = Nothing
  Set attachmentObject = 
doc.GetAttachment(DOCNames(j%))
  Call ExportAttachment(attachmentObject)   
  Call attachmentObject.Remove   
  Call doc.Save( False, True ) 
'creates conflict doc if conflict exists
 Next  

 Set doc = dc.GetNextDocument(doc)
Wend

Msgbox "Export Complete.", 16, "Finished"

End Sub

Sub ExportAttachment(o As Variant)

Dim sAttachmentName As String
Dim sNum As String
Dim sTemp As String

sAttachmentName = sDir 
& "\" & o.Source
While Not (Dir$(sAttachmentName, 0) = "")
 sNum = Right
(Strleftback(sAttachmentName, "."), 2)
 If Isnumeric(sNum) Then
  sTemp = Strleftback(sAttachmentName, ".")
  sTemp = Left(sTemp, Len(sTemp) - 2)
  sAttachmentName = sTemp
& Format$(Cint(sNum) + 1, "##00") & _
  "." & Strrightback(sAttachmentName, ".")
 Else
  sAttachmentName = 
Strleftback(sAttachmentName, ".") & _
  "01." & Strrightback(sAttachmentName, ".")
 End If
Wend

Print "Exporting " & sAttachmentName
'Save the file
Call o.ExtractFile( sAttachmentName ) 

End Sub

引用自:https://serverfault.com/questions/148210