Java 从IBM notes数据库提取word文档附件
我正在开发一个Java应用程序,它将连接到IBMNotes数据库,并从给定的数据库条目中提取附件(它将是word文档)。然后需要将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
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”);我得到的身体是空的。不知道为什么?请为此打开一个新问题并编写完整的代码,这里不是帮助您的地方