Xpages 在Excel中导出和查看阿拉伯字符时会出现乱码
我正在尝试将我的xpages导出到excel。它涉及将阿拉伯语文本和数字导出到excel 问题是当我在excel中查看导出列时(客户端名称为阿拉伯语)。结果是垃圾 我的lotus数据库配置为支持英语和阿拉伯语,编码为utf-8 非常欢迎任何帮助 这是我正在使用的代码Xpages 在Excel中导出和查看阿拉伯字符时会出现乱码,xpages,xpages-extlib,Xpages,Xpages Extlib,我正在尝试将我的xpages导出到excel。它涉及将阿拉伯语文本和数字导出到excel 问题是当我在excel中查看导出列时(客户端名称为阿拉伯语)。结果是垃圾 我的lotus数据库配置为支持英语和阿拉伯语,编码为utf-8 非常欢迎任何帮助 这是我正在使用的代码 var exCon = facesContext.getExternalContext(); var writer = facesContext.getResponseWriter(); var response = exCon
var exCon = facesContext.getExternalContext();
var writer = facesContext.getResponseWriter();
var response = exCon.getResponse();
docIDArray=sessionScope.selectedDocs;
//lets define domino classess
var myView:NotesView = database.getView(sessionScope.vname);
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Content-disposition", "attachment; filename=CustomerCare.xls");
writer.write("<table>");
writer.write("<thead><tr>");
writer.write("<td><b>Created</b></td>");
writer.write("<td><b>Client Name</b></td>");
writer.write("<td><b>Daybreak ID</b></td>");
writer.write("<td><b>Request type</b></td>");
writer.write("<td><b>Status</b></td>");
writer.write("<td><b>Mobile #</b></td>");
writer.write("<td><b>Escalation</b></td>");
writer.write("<td><b>Request via</b></td>");
writer.write("<td><b>From</b></td>");
writer.write("<td><b>Updated by</b></td>");
writer.write("</tr></thead>");
/**
debuggin purpose only
print(sessionScope.vname+'-viewname');
print(sessionScope.selectedDocs+' -selectedDocs');
print(sessionScope.vfilter+'-vfilter' );
print(sessionScope.catFilter+'-catFilter');
**/
//determine if user wants to export all or the individual documents
//export all document in current display/view
if (docIDArray.length==0){
//since some view are special evaluate them here
switch(sessionScope.vname)
{
case "Status":
var dc:NotesDocumentCollection=myView.getAllDocumentsByKey(sessionScope.vfilter);
var doc:NotesDocument=dc.getFirstDocument();
while (doc!= null){
writer.write("<tr>");
writer.write("<td>" + doc.getItemValueDateTimeArray("dxdateFiled").elementAt(0)+ "</td>");
writer.write("<td>" + doc.getItemValueString("cxClientName")+ "</td>");
writer.write("<td>" + doc.getItemValueString("cxDBID") + "</td>");
writer.write("<td>" + @Implode(doc.getItemValueString("cxStatus_1"),",") + "</td>");
//writer.write("<td>" + doc.getItemValueString("cxStatus_1") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxStatus1") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxMobile") + "</td>");
if(doc.getItemValue("escalationlevel").toString()=='[3.0]'){
writer.write("<td>" + '3' + "</td>");
}else{
writer.write("<td>" + '-' + "</td>");
}
writer.write("<td>" + doc.getItemValueString("cxRecRequestvia") + "</td>");
writer.write("<td>" + doc.getItemValueString("From")+ "</td>");
writer.write("<td>" + doc.getItemValueString("Closedby") + "</td>");
writer.write("</tr>");
doc=dc.getNextDocument(doc);
}
break;
case "Categories":
case "callStatus":
var sString:String = sessionScope.catFilter;
var viewNav:NotesViewNavigator = myView.createViewNavFromCategory(sString);
var viewEnt:NotesViewEntry = viewNav.getFirst();
while (viewEnt!=null){
writer.write("<tr>");
writer.write("<td>" + viewEnt.getColumnValues()[2] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[3] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[5] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[7].toString() + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[8] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[9] + "</td>");
if( viewEnt.getColumnValues()[6].toString()=='3'){
writer.write("<td>" + '3' + "</td>");
}else{
writer.write("<td>" + '-' + "</td>");
}
writer.write("<td>" + viewEnt.getColumnValues()[10] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[1] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[11] + "</td>");
writer.write("</tr>");
viewEnt = viewNav.getNext(viewEnt);
}
break;
default:
var viewNav:NotesViewNavigator = myView.createViewNav();
var viewEnt:NotesViewEntry = viewNav.getFirst();
while (viewEnt!=null){
writer.write("<tr>");
writer.write("<td>" + viewEnt.getColumnValues()[2] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[3] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[5] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[7].toString() + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[8] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[9] + "</td>");
if( viewEnt.getColumnValues()[6].toString()=='3'){
writer.write("<td>" + '3' + "</td>");
}else{
writer.write("<td>" + '-' + "</td>");
}
writer.write("<td>" + viewEnt.getColumnValues()[10] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[1] + "</td>");
writer.write("<td>" + viewEnt.getColumnValues()[11] + "</td>");
writer.write("</tr>");
viewEnt = viewNav.getNext(viewEnt);
}
}
}else{
var db:NotesDatabase = session.getCurrentDatabase();
switch(sessionScope.vname)
{
case "Status":
for(i=0;i < docIDArray.length;i++){
var docId=docIDArray[i];
var doc:NotesDocument=db.getDocumentByID(docId);
var output:string = "";
if(doc != null) {
writer.write("<tr>");
writer.write("<td>" + doc.getItemValueDateTimeArray("dxdateFiled").elementAt(0)+ "</td>");
writer.write("<td>" + doc.getItemValueString("cxClientName")+ "</td>");
writer.write("<td>" + doc.getItemValueString("cxDBID") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxStatus_1") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxStatus1") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxMobile") + "</td>");
if(doc.getItemValue("escalationlevel").toString()=='[3.0]'){
writer.write("<td>" + '3' + "</td>");
}else{
writer.write("<td>" + '-' + "</td>");
}
writer.write("<td>" + doc.getItemValueString("cxRecRequestvia") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxUsername") + "</td>");
writer.write("<td>" + doc.getItemValueString("Closedby") + "</td>");
writer.write("</tr>");
} // end if
}//end for
break;
default:
for(i=0;i < docIDArray.length;i++){
var docId=docIDArray[i];
var doc:NotesDocument=db.getDocumentByID(docId);
var output:string = "";
if(doc != null) {
writer.write("<tr>");
writer.write("<td>" + doc.getItemValueDateTimeArray("dxdateFiled").elementAt(0)+ "</td>");
writer.write("<td>" + doc.getItemValueString("cxClientName")+ "</td>");
writer.write("<td>" + doc.getItemValueString("cxDBID") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxStatus_1") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxStatus1") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxMobile") + "</td>");
if(doc.getItemValue("escalationlevel").toString()=='[3.0]'){
writer.write("<td>" + '3' + "</td>");
}else{
writer.write("<td>" + '-' + "</td>");
}
writer.write("<td>" + doc.getItemValueString("cxRecRequestvia") + "</td>");
writer.write("<td>" + doc.getItemValueString("cxUsername") + "</td>");
writer.write("<td>" + doc.getItemValueString("Closedby") + "</td>");
writer.write("</tr>");
} // end if
}//end for
}
}
writer.write("</table>");
writer.endDocument();
facesContext.responseComplete();
var exCon=facesContext.getExternalContext();
var writer=facesContext.getResponseWriter();
var response=exCon.getResponse();
docIDArray=会话范围。选择的DOCS;
//让我们定义domino类
var myView:NotesView=database.getView(sessionScope.vname);
response.setContentType(“application/vnd.ms excel;charset=utf-8”);
setHeader(“缓存控制”、“无缓存”);
setHeader(“内容处置”、“附件;文件名=CustomerCare.xls”);
作者:写(“”);
作者:写(“”);
作者。写(“创建”);
编写人(以下简称“客户名称”);
writer.write(“黎明ID”);
write.write(“请求类型”);
作家。写作(“身份”);
writer.write(“Mobile#”);
编写人。编写(“升级”);
写信人。写信(“请求通过”);
作者。写(“来自”);
编写人。编写人(“更新人”);
作者:写(“”);
/**
调试目的
打印(sessionScope.vname+'-viewname');
打印(sessionScope.selectedDocs+'-selectedDocs');
打印(sessionScope.vfilter+'-vfilter');
打印(sessionScope.catFilter+'-catFilter');
**/
//确定用户希望导出所有文档还是单个文档
//导出当前显示/视图中的所有文档
if(docIDArray.length==0){
//因为有些观点是特殊的,所以在这里对它们进行评估
开关(sessionScope.vname)
{
案例“状态”:
var dc:NotesDocumentCollection=myView.getAllDocumentsByKey(sessionScope.vfilter);
var doc:NotesDocument=dc.getFirstDocument();
while(doc!=null){
作者:写(“”);
writer.write(“+doc.getItemValueDateTimeArray(“dxDateField”).elementAt(0)+”);
write(“+doc.getItemValueString(“cxClientName”)+”);
write(“+doc.getItemValueString(“cxDBID”)+”);
write(“+@内爆(doc.getItemValueString(“cxStatus_1”),“,”+”);
//write(“+doc.getItemValueString(“cxStatus_1”)+”);
write(“+doc.getItemValueString(“cxStatus1”)+”);
write(“+doc.getItemValueString(“cxMobile”)+”);
如果(doc.getItemValue(“escalationlevel”).toString()=='[3.0]'){
writer.write(“+”3“+”);
}否则{
writer.write(“+”-“+”);
}
write(“+doc.getItemValueString(“cxreRequestVia”)+”);
write(“+doc.getItemValueString(“From”)+”);
write(“+doc.getItemValueString(“Closedby”)+”);
作者:写(“”);
doc=dc.getNextDocument(doc);
}
打破
案例“类别”:
案例“callStatus”:
var sString:String=sessionScope.catFilter;
var viewNav:NotesViewNavigator=myView.createViewNavFromCategory(sString);
var viewEnt:NotesViewEntry=viewNav.getFirst();
while(viewEnt!=null){
作者:写(“”);
writer.write(“+viewEnt.getColumnValues()[2]+”);
writer.write(“+viewEnt.getColumnValues()[3]+”);
writer.write(“+viewEnt.getColumnValues()[5]+”);
write(“+viewEnt.getColumnValues()[7].toString()+”);
writer.write(“+viewEnt.getColumnValues()[8]+”);
write(“+viewEnt.getColumnValues()[9]+”);
if(viewEnt.getColumnValues()[6].toString()='3'){
writer.write(“+”3“+”);
}否则{
writer.write(“+”-“+”);
}
write(“+viewEnt.getColumnValues()[10]+”);
write(“+viewEnt.getColumnValues()[1]+”);
write(“+viewEnt.getColumnValues()[11]+”);
作者:写(“”);
viewEnt=viewNav.getNext(viewEnt);
}
打破
违约:
var viewNav:NotesViewNavigator=myView.createViewNav();
var viewEnt:NotesViewEntry=viewNav.getFirst();
while(viewEnt!=null){
作者:写(“”);
writer.write(“+viewEnt.getColumnValues()[2]+”);
writer.write(“+viewEnt.getColumnValues()[3]+”);
writer.write(“+viewEnt.getColumnValues()[5]+”);
write(“+viewEnt.getColumnValues()[7].toString()+”);
writer.write(“+viewEnt.getColumnValues()[8]+”);
write(“+viewEnt.getColumnValues()[9]+”);
if(viewEnt.getColumnValues()[6].toString()='3'){
writer.write(“+”3“+”);
}否则{
writer.write(“+”-“+”);
}
write(“+viewEnt.getColumnValues()[10]+”);
write(“+viewEnt.getColumnValues()[1]+”);
write(“+viewEnt.getColumnValues()[11]+”);
作者:写(“”);
viewEnt=viewNav.getNext(viewEnt);
}
}
}否则{
var db:NotesDatabase=session.getCurrentDatabase();
开关(sessionScope.vname)
{
案例“状态”:
对于(i=0;i