Xpages,将视图保存到excel文件中
我想将搜索报告保存到excel文件中,但它是以.xsp扩展名而不是excel保存的 我使用以下代码:Xpages,将视图保存到excel文件中,excel,view,xpages,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 = facesCon
<?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>
我使用pdf中的代码。。。这不是我自己创造的,也许是出了问题
谢谢
Florin添加一行
response.setHeader("Content-Disposition", "attachment; filename=yourfile.xls");
或
使用“内联”,浏览器将尝试在浏览器中打开文件,而“附件”将强制下载文件。这有什么问题
var exCon = facesContext.getExternalContext();
var writer = facesContext.getResponseWriter();
var response = exCon.getResponse();
var myView:NotesView = database.getView('vwSearch');
myView.FTSearch("sessionScope.search");
var viewNav:NotesViewNavigator = myView.createViewNav();
var viewEnt:NotesViewEntry = viewNav.getFirst();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Content-Disposition", "attachment; filename=raport.xls");
writer.write("<table>");
writer.write("<thead><tr>");
writer.write("<td><b>Nume</b></td>");
writer.write("<td><b>Ora Intrare</b></td>");
writer.write("<td><b>Ora Iesire</b></td>");
writer.write("<td><b>Timp</b></td>");
writer.write("<td><b>Timp 2</b></td>");
writer.write("<td><b>Data Creare</b></td>");
writer.write("<td><b>Email</b></td>");
writer.write("<td><b>Telefon</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].toJavaDate().getHours()+":"+viewEnt.getColumnValues()[1].toJavaDate().getMinutes() + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[2].toJavaDate().getHours()+":"+viewEnt.getColumnValues()[2].toJavaDate().getMinutes() + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[3] + "</td>");
writer.write("<td>" + "08:00" + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[4].toJavaDate() + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[5] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[6] + "</td>");
writer.write("</tr>");
viewEnt = viewNav.getNext(viewEnt);
}
writer.write("</table>");
writer.endDocument()
var exCon=facesContext.getExternalContext();
var writer=facesContext.getResponseWriter();
var response=exCon.getResponse();
var myView:NotesView=database.getView('vwSearch');
myView.FTSearch(“sessionScope.search”);
var viewNav:NotesViewNavigator=myView.createViewNav();
var viewEnt:NotesViewEntry=viewNav.getFirst();
response.setContentType(“application/vnd.ms excel”);
setHeader(“缓存控制”、“无缓存”);
setHeader(“内容处置”、“附件;文件名=raport.xls”);
作者:写(“”);
作者:写(“”);
作家。写(“Nume”);
作家。写作(“Ora intrale”);
作家。写作(“Ora Iesire”);
作者:编写(“Timp”);
writer.write(“TIMP2”);
writer.write(“数据凭证”);
作者:写信(“电子邮件”);
作家、作家(“Telefon”);
作者:写(“”);
while(viewEnt!=null){
作者:写(“”);
writer.write(“+viewEnt.getColumnValues()[0]+”);
write(“+viewEnt.getColumnValues()[1].toJavaDate().getHours()+”:“+viewEnt.getColumnValues()[1].toJavaDate().getMinutes()+”);
write(“+viewEnt.getColumnValues()[2].toJavaDate().getHours()+”:“+viewEnt.getColumnValues()[2].toJavaDate().getMinutes()+”);
writer.write(“+viewEnt.getColumnValues()[3]+”);
writer.write(“+”08:00“+”);
write(“+viewEnt.getColumnValues()[4].toJavaDate()+”);
writer.write(“+viewEnt.getColumnValues()[5]+”);
writer.write(“+viewEnt.getColumnValues()[6]+”);
作者:写(“”);
viewEnt=viewNav.getNext(viewEnt);
}
作者:写(“”);
writer.endDocument()
即使我使用:
myView.FTSearch(“杰夫”);
它不会只显示带有Jeff的文档。。。为什么?不确定是否要在一个步骤中执行搜索并全部导出,但您始终可以修改视图选择公式并刷新视图。然后向用户提供一个导出按钮,以按照Knut所说的步骤修改当前代码。我在以前的一个项目中这样做过,我在Excel中打开了导出,并简单地保存为逗号分隔的文件。在另一个项目中,我调用了一个Xagent,它在beforeRenderResponse中有代码,可以在单击按钮后在Excel中打开。只有其他选项。如何从视图转换数据类型?因为我有一列显示数据/时间,我只希望时间显示在excel中。您可以使用
dateTime.setAnyDate()
-它从dateTime值中删除日期部分。或者,使用.toJavaDate
将其转换为Java日期,并使用格式化程序获取时间。如何仅在搜索后导出文档?如何仅获取搜索视图中的文档?您需要在getView()行之后添加myView.FTSearch(“yourSearch”)
。始终执行视图选择公式。您只能获得符合选择公式的文档。我理解您的问题,您希望在该视图上由.FTSearch执行额外的“子”搜索。有关此方法的更多信息,请参阅Notes文档Florin,您可能需要稍微清理一下代码。将.getColumnValues()赋给变量一次,并避免writer.write中的字符串串联。将缺少的.recycle()更改行添加到myView.FTSearch(sessionScope.search)代码>(不带引号),因为您要搜索sessionScope.search的值,而不是字符串“sessionScope.search”.Ups,刚刚意识到NotesViewNavigator忽略了FTSearch。您必须将代码更改为.getFirstDocument()和.getNextDocument(),或者使用NotesViewEntryCollection。您可以对其运行FTSearch。使用getFirstDoc和getNextDoc代替getFirst和getNext,它只返回一个文档。
var exCon = facesContext.getExternalContext();
var writer = facesContext.getResponseWriter();
var response = exCon.getResponse();
var myView:NotesView = database.getView('vwSearch');
myView.FTSearch("sessionScope.search");
var viewNav:NotesViewNavigator = myView.createViewNav();
var viewEnt:NotesViewEntry = viewNav.getFirst();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Content-Disposition", "attachment; filename=raport.xls");
writer.write("<table>");
writer.write("<thead><tr>");
writer.write("<td><b>Nume</b></td>");
writer.write("<td><b>Ora Intrare</b></td>");
writer.write("<td><b>Ora Iesire</b></td>");
writer.write("<td><b>Timp</b></td>");
writer.write("<td><b>Timp 2</b></td>");
writer.write("<td><b>Data Creare</b></td>");
writer.write("<td><b>Email</b></td>");
writer.write("<td><b>Telefon</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].toJavaDate().getHours()+":"+viewEnt.getColumnValues()[1].toJavaDate().getMinutes() + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[2].toJavaDate().getHours()+":"+viewEnt.getColumnValues()[2].toJavaDate().getMinutes() + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[3] + "</td>");
writer.write("<td>" + "08:00" + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[4].toJavaDate() + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[5] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[6] + "</td>");
writer.write("</tr>");
viewEnt = viewNav.getNext(viewEnt);
}
writer.write("</table>");
writer.endDocument()