通过Apache-POI将Lotus Notes富文本mime内容导出到Word / Excel中

时间:2013-01-16 11:03:39

标签: apache-poi xpages mime

我创建了一个网页,并希望允许用户导出网页内容。为此,我使用了Apache-POI库。这适用于文本。但是我如何导出mime内容?如果我将富文本属性更改为“将内容存储为html / mime”(因为我想格式化Notes中的内容,有时内容包含图像)。 如果不可能,那么xpage中的可用替代品是什么?

以下代码将作为xAgent执行。

由于 阿明

importPackage(java.io);
importPackage(org.apache.poi.hwpf);
importPackage(org.apache.poi.hwpf.usermodel);
importPackage(org.apache.poi.poifs.filesystem);

var docID = sessionScope.contentUNID;
var nv:NotesView = database.getView("(allByKey)");
var doc:NotesDocument = nv.getDocumentByKey(docID, true);

var fs:POIFSFileSystem = new POIFSFileSystem(new FileInputStream("empty.doc"));
var wdoc:HWPFDocument = new HWPFDocument(fs);
var wdRange:Range = wdoc.getRange();

wdRange.insertBefore(doc.getItemValueString("title"));
wdRange.insertAfter(doc.getMIMEEntity("content")); !!!doesn'twork

var extCont = facesContext.getExternalContext(); 
var pageResponse = extCont.getResponse();
var pageOutput = pageResponse.getOutputStream();

pageResponse.setContentType("application/vnd.ms-word");
pageResponse.setHeader("Cache-Control", "no-cache");
pageResponse.setHeader("Content-Disposition","inline; filename=export.doc");
wdoc.write(pageOutput);
pageOutput.flush();
pageOutput.close();

facesContext.responseComplete();

1 个答案:

答案 0 :(得分:1)

您需要使用MIMEEntity类的方法来获取内容。例如doc.getMIMEEntity("content").getContentAsText()。为此,您可能需要在获取文档之前设置session.setConvertMIME(false)

另一种方法是将RichTextItemdoc.getFirstItem("content")一样使用,并使用RichTextItem类的方法来获取内容。在这种情况下,您不会设置session.setConvertMIME(false)

相关问题