Xpages,将视图保存到excel文件中

Flo*_*Pop 4 excel view xpages

我想将一个搜索报告保存到一个excel文件中,但它保存的.xsp扩展名不是excel.

我使用以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false">
<xp:this.afterRenderResponse><![CDATA[#{javascript: 
var exCon = facesContext.getExternalContext(); 
var writer = facesContext.getResponseWriter();
var response = exCon.getResponse();
var myView:NotesView = database.getView('vwSearch');
var viewNav:NotesViewNavigator = myView.createViewNav();
var viewEnt:NotesViewEntry = viewNav.getFirst();
print("2")
response.setContentType("application/vnd.ms-excel");
response.setHeader("Cache-Control", "no-cache");
writer.write("<table>");
writer.write("<thead><tr>");
writer.write("<td><b>Column1Header</b></td>");
writer.write("<td><b>Column2Header</b></td>");
writer.write("<td><b>Column3Header</b></td>");
writer.write("<td><b>Column4Header</b></td>");
writer.write("<td><b>Column5Header</b></td>");
writer.write("</tr></thead>");
while (viewEnt != null) {
writer.write("<tr>");
writer.write("<td>" + viewEnt.getColumnValues()[0] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[1] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[2] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[3] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[4] + "</td>");
writer.write("</tr>");
viewEnt = viewNav.getNext(viewEnt);
}
writer.write("</table>");
writer.endDocument()}]]></xp:this.afterRenderResponse>
</xp:view>
Run Code Online (Sandbox Code Playgroud)

我从pdf中使用这段代码......这不是我自己的创作,也许是错误的.

谢谢,

弗洛林

Knu*_*ann 6

添加一行

response.setHeader("Content-Disposition", "attachment; filename=yourfile.xls");
Run Code Online (Sandbox Code Playgroud)

要么

response.setHeader("Content-Disposition", "inline; filename=yourfile.xls");
Run Code Online (Sandbox Code Playgroud)

使用"内联",浏览器将尝试在浏览器中打开文件,而"附件"将强制下载.