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



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

下面的代码将作为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();

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

另一种方法是用doc.getFirstItem("content")获取RichTextItem,使用RichTextItem类的方法获取内容。在这种情况下,您不需要设置session.setConvertMIME(false) .

最新更新