Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从IBM notes数据库提取word文档附件_Java_Lotus Domino_Lotus Notes - Fatal编程技术网

Java 从IBM notes数据库提取word文档附件

Java 从IBM notes数据库提取word文档附件,java,lotus-domino,lotus-notes,Java,Lotus Domino,Lotus Notes,我正在开发一个Java应用程序,它将连接到IBMNotes数据库,并从给定的数据库条目中提取附件(它将是word文档)。然后需要将word文档保存到本地磁盘。我已经在这里读过类似的情况,但我似乎只能确认该文档中有一个嵌入文件,我似乎无法访问它。到目前为止,我掌握的代码是: import java.util.Enumeration; import java.util.Vector; import lotus.domino.*; import lotus.domino.cso.RichTextIte

我正在开发一个Java应用程序,它将连接到IBMNotes数据库,并从给定的数据库条目中提取附件(它将是word文档)。然后需要将word文档保存到本地磁盘。我已经在这里读过类似的情况,但我似乎只能确认该文档中有一个嵌入文件,我似乎无法访问它。到目前为止,我掌握的代码是:

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测试语句返回true,因此我知道有一个附件。如果有任何好处,则此特定notes条目上的word文档名为“C4-P0007-BRS.doc”。我已经玩过getAttachment()、getEmbeddedObjects()和getFirstItem(),但没有用。非常感谢您的帮助


谢谢。

附件通常嵌入在Richtext-items中(大多数情况下)。在备忘录中,该项目的名称为“正文”。尝试Richtextitem的方法获取附件。以下是designer帮助中的一个示例:

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());
        }
    }
还有一种方法可以直接从文档中提取嵌入的对象,但是您需要附件的名称。您可以使用“Evaluate”-语句获取所有附件名:

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());
        }
    }

附件通常嵌入在Richtext-items中(大多数情况下)。在备忘录中,该项目的名称为“正文”。尝试Richtextitem的方法获取附件。以下是designer帮助中的一个示例:

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());
        }
    }
还有一种方法可以直接从文档中提取嵌入的对象,但是您需要附件的名称。您可以使用“Evaluate”-语句获取所有附件名:

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());
        }
    }

附件通常嵌入在Richtext-items中(大多数情况下)。在备忘录中,该项目的名称为“正文”。尝试Richtextitem的方法获取附件。以下是designer帮助中的一个示例:

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());
        }
    }
还有一种方法可以直接从文档中提取嵌入的对象,但是您需要附件的名称。您可以使用“Evaluate”-语句获取所有附件名:

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());
        }
    }

附件通常嵌入在Richtext-items中(大多数情况下)。在备忘录中,该项目的名称为“正文”。尝试Richtextitem的方法获取附件。以下是designer帮助中的一个示例:

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());
        }
    }
还有一种方法可以直接从文档中提取嵌入的对象,但是您需要附件的名称。您可以使用“Evaluate”-语句获取所有附件名:

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());
        }
    }

谢谢你的回复,我正在运行你给我的顶级代码,但它似乎抛出了一个错误。java.lang.ClassCastException:lotus.domino.local.RichTextItem无法强制转换为lotus.domino.cso.RichTextItem为什么要导入“lotus.domino.cso.RichTextItem”?有一个错误。。。你甚至不需要导入…你提供的第二个解决方案解决了这个问题。文件正在解压缩。非常感谢!当我使用此代码时,RichTextItem body=(RichTextItem)doc.getFirstItem(“body”);我得到的身体是空的。不知道为什么?请为此打开一个新问题并编写完整的代码,这不是帮助您的地方谢谢您的回答,我正在运行您给我的顶级代码,但它似乎抛出了一个错误。java.lang.ClassCastException:lotus.domino.local.RichTextItem无法强制转换为lotus.domino.cso.RichTextItem为什么要导入“lotus.domino.cso.RichTextItem”?有一个错误。。。你甚至不需要导入…你提供的第二个解决方案解决了这个问题。文件正在解压缩。非常感谢!当我使用此代码时,RichTextItem body=(RichTextItem)doc.getFirstItem(“body”);我得到的身体是空的。不知道为什么?请为此打开一个新问题并编写完整的代码,这不是帮助您的地方谢谢您的回答,我正在运行您给我的顶级代码,但它似乎抛出了一个错误。java.lang.ClassCastException:lotus.domino.local.RichTextItem无法强制转换为lotus.domino.cso.RichTextItem为什么要导入“lotus.domino.cso.RichTextItem”?有一个错误。。。你甚至不需要导入…你提供的第二个解决方案解决了这个问题。文件正在解压缩。非常感谢!当我使用此代码时,RichTextItem body=(RichTextItem)doc.getFirstItem(“body”);我得到的身体是空的。不知道为什么?请为此打开一个新问题并编写完整的代码,这不是帮助您的地方谢谢您的回答,我正在运行您给我的顶级代码,但它似乎抛出了一个错误。java.lang.ClassCastException:lotus.domino.local.RichTextItem无法强制转换为lotus.domino.cso.RichTextItem为什么要导入“lotus.domino.cso.RichTextItem”?有一个错误。。。你甚至不需要导入…你提供的第二个解决方案解决了这个问题。文件正在解压缩。非常感谢!当我使用此代码时,RichTextItem body=(RichTextItem)doc.getFirstItem(“body”);我得到的身体是空的。不知道为什么?请为此打开一个新问题并编写完整的代码,这里不是帮助您的地方