2014-06-30 32 views
0

我正在開發一個Java應用程序,它將連接到IBM筆記數據庫並從給定的數據庫條目中提取附件(這將是一個word文檔)。 Word文檔需要保存到本地磁盤。我已經閱讀了類似的情況,但我似乎無法確認該文檔中是否有嵌入文件,我似乎無法訪問它。我到目前爲止的代碼是:從IBM筆記數據庫提取word文檔attatchment

import java.util.Enumeration; 
import java.util.Vector; 
import lotus.domino.*; 
import lotus.domino.cso.RichTextItem; 

public class notesRetrieval extends NotesThread 
{ 
public void runNotes() 
    { 
    try 
    { 
     Session s = NotesFactory.createSessionWithFullAccess("testpassword"); 
     Database db = s.getDatabase("Server1", "dev/test.nsf", false); 
     View materialview = db.getView("MaterialNumberLU"); 
     Document doc = materialview.getDocumentByKey("3005"); 
     System.out.print(doc.hasEmbedded()); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    } 
} 

我hasEmbedded測試語句返回,所以我知道有一個attatchment。如果它有任何好處,這個特定筆記條目上的單詞文件被命名爲「C4-P0007-BRS.doc」。我玩過getAttachment(),getEmbeddedObjects()和getFirstItem(),但沒有效果。任何幫助非常感謝。

謝謝。

回答

3

附件通常嵌入在Richtext項目中(大部分時間)。在備忘錄中,此項目的名稱是「正文」。嘗試使用Richtextitem的方法獲取附件。以下是設計師幫助的示例:

RichTextItem body = (RichTextItem)doc.getFirstItem("Body"); 
    Vector v = body.getEmbeddedObjects(); 
    Enumeration e = v.elements(); 
    while (e.hasMoreElements()) { 
     EmbeddedObject eo = (EmbeddedObject)e.nextElement(); 
     if (eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) { 
     eo.extractFile("c:\\extracts\\" + eo.getSource()); 
     } 
    } 

還有另一種可能性,即直接從文檔中提取嵌入對象,但是因此您需要附件的名稱。您可以使用「評估」 - 聲明獲得所有附件名稱:

Vector attachmentNames = session.evaluate("@AttachmentNames", doc); 
Enumeration e = attachmentNames.elements(); 
    while (e.hasMoreElements()) { 
     String attachmentName = e.nextElement(); 
     EmbeddedObject eo = doc.getAttachment(attachmentName); 
     if (eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) { 
      eo.extractFile("c:\\extracts\\" + eo.getSource()); 
     } 
    } 
+0

感謝您的回覆,即時運行您給我的頂級代碼,但它似乎會引發錯誤。 java.lang.ClassCastException:lotus.domino.local.RichTextItem不能轉換爲lotus.domino.cso.RichTextItem – user3572370

+0

爲什麼要導入「lotus.domino.cso.RichTextItem」?有錯誤...你甚至不需要導入... –

+0

你提供的第二個解決方案已經解決了這個問題。文件現在正在提取。非常感謝! – user3572370