<追記>
以下の方法を試してみたのですが、ファイルのダウンロードはできても形式が違うと怒られて
エクセルで読みだすことができませんでした。使用したエクセルはExcel2010です。
setContentTypeの書き方に問題があると思い、ネットで検索したのですが、書き換え方がわかりませんでした。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.afterRenderResponse><![CDATA[#{javascript:
var exCon = facesContext.getExternalContext();
var writer = facesContext.getResponseWriter();
var response = exCon.getResponse();
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Cache-Control", "no-cache");
response.addHeader("Content-Disposition", "inline; filename=dynamic.xlsx");
writer.write("<table>\n");
writer.write("<thead><tr>\n");
writer.write("<td><b>申請日</b></td>");
writer.write("<td><b>部門コード</b></td>");
writer.write("<td><b>部署名</b></td>");
writer.write("<td><b>申請者</b></td>");
writer.write("<td><b>持帰り期間(From)</b></td>");
writer.write("</tr></thead>\n");
// var view:NotesView = database.getView("list");
// var doc = view.getFirstDocument()
var panel = getComponent("viewPanel1");
var id_arr = panel.getSelectedIds();
for(var docid in id_arr) {
var doc = database.getDocumentByID(docid);
var kanri_no = doc.getItemValueDate("Shinseibi");
var group = doc.getItemValueString("ShinseisyaBuCode");
var username = doc.getItemValueString("ShinseisyaBu");
var os_name = doc.getItemValueString("ShinseisyaKJName");
var hostname = doc.getItemValueDate("KikanFrom");
writer.write("<tr>");
writer.write("<td>" + kanri_no + "</td>");
writer.write("<td>" + group + "</td>");
writer.write("<td>" + username + "</td>");
writer.write("<td>" + os_name + "</td>");
writer.write("<td>" + hostname + "</td>");
writer.write("</tr>\n");
doc = view.getNextDocument(doc);
doc.recycle();
doc = tmp_doc
}
writer.write("</table>");
writer.endDocument();
}]]></xp:this.afterRenderResponse>
</xp:view>