2011-09-28 164 views
1

我有tomcat6并在其中使用open report应用程序。 当我将任何报告导出为ex​​cel或pdf时,它不支持阿拉伯语言。 请任何人都可以帮我吗? 你可以在下面找到jsp页面的代码。导出为Excel,PDF,CSV文件不支持阿拉伯语言


<%@ taglib prefix="s" uri="/struts-tags" %> 
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %> 
<%@page import="org.efs.openreports.util.DisplayProperty"%> 
<%@page import="org.efs.openreports.objects.Report"%> 
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

<s:include value="Banner.jsp" /> 
<s:if test="report == null || !report.isDisplayInline()"> 

<a class="back-link img-report-small" href="reportList.action"><s:text name="link.back.reports"/></a> 
<a class="back-link img-group-small" href="reportGroup.action"><s:text name="link.back.groups"/></a>  

<br/> 

<s:actionerror/> 
    <div align="center"> 
     <div class="important img-queryreport" id="instructions"><s:property value="report.name"/></div> 
    </div> 
</s:if> 

<div align="center"> 

    <s:set name="results" value="results" scope="request" /> 
    <s:set name="properties" value="properties" scope="request" /> 
    <s:set name="report" value="report" scope="request" /> 
    <% DisplayProperty[] displayProperties = (DisplayProperty[]) request.getAttribute("properties"); 
    request.setCharacterEncoding("UTF-8"); 
    Report report = (Report) request.getAttribute("report");%> 

    <display:table name="results" class="displayTag" sort="list" export="true" pagesize="20" requestURI="queryReportResult.action?tab=PRODUCTIVITY" excludedParams="org.apache.struts.taglib.html.TOKEN"> 
    <% for (int i=0; i < displayProperties.length; i++) { %> 
     <display:column property="<%=displayProperties[i].getName()%>" title="<%=displayProperties[i].getDisplayName()%>" sortable="true" headerClass="sortable" /> 
    <% } %> 
     <display:setProperty name="export.pdf" value="true"/> 
    <display:setProperty name="export.xml.filename" value="<%=report.getName() + ".xml"%>"/> 
    <display:setProperty name="export.pdf.filename" value="<%=report.getName() + ".pdf"%>"/> 
    <display:setProperty name="export.csv.filename" value="<%=report.getName() + ".csv"%>"/> 
    <display:setProperty name="export.excel.filename" value="<%=report.getName() + ".xls"%>"/> 
    </display:table> 


    <s:if test="#session.user.scheduler"> 

    <s:text name="queryReport.scheduleReport"/> 
    <a href="reportOptions.action?reportId=<%=report.getId()%>&submitSchedule=true&exportType=3">CSV</a> | 
    <a href="reportOptions.action?reportId=<%=report.getId()%>&submitSchedule=true&exportType=1">Excel</a> | 
    <a href="reportOptions.action?reportId=<%=report.getId()%>&submitSchedule=true&exportType=0">PDF</a> 

    </s:if> 

</div> 

<s:if test="report == null || !report.isDisplayInline()"> 

<s:include value="Footer.jsp" /> 

</s:if> 

快帮我请...

+0

你说的“不支持阿拉伯语”是什么意思?字符是否损坏?文字方向错误?还有别的吗? “快速帮助我”在这里工作不太好,特别是当您提供的信息不足时...... –

回答

0

搜索,我发现这种情况的解决方案后: 你应该添加
response.setContentType(“应用程序/ vnd.ms-的excel;字符集= Cp1256" );
而不是:
request.setCharacterEncoding(“UTF-8”);
在<%DisplayProperty .....>的利益

1

线

下得到了类似的问题,JBoss的使用Displaytag 1.2条纹 MVC应用程序采摘。

当数据库(MySQL的)中的溶液得到含斯堪的纳维亚语字符的字符串以UTF-8编码,则该CSV和Excel已损坏即所下载的文件的那些表的出口不含有数据或损坏少量的无用数据。

我认为主要的问题,相关的,是关于芬兰人物的编码这在ISO-8859-1,但不是UTF-8的数据(CFR。http://en.wikipedia.org/wiki/ISO/IEC_8859-1)。

是为我工作的修复是:

  1. 加入这Stripes的行动豆:

    getContext().getResponse().setCharacterEncoding("UTF-8"); 
    getContext().getResponse().setContentType("application/vnd.ms-excel;charset=UTF-8"); 
    
  2. 添加以下内容到相应的JSP:

    <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 
    

此后我是s能够从包含用北欧语言的UTF-8字符编码的数据的Displaytag表中下载CSV和Excel文件。

0

我们正在使用DisplayTag 1.1.1,并且在Excel/CSV导出中我们遇到了特殊字符编码(UTF-8)的问题。在一些搜索之后,我们可以通过在将字符串导出到TableTag.java类中的writeExport()之前添加BOM来解决问题。

例:

的JspWriter LOUT = pageContext.getOut();

...

LOUT。写( '\ ufeff');

lOut.write(pExportString);

除了在XLS输出这种运作良好(显示特殊字符正确),在Excel 2010显示在一个小区中的所有数据虽然CSV输出正确显示。 \ t - 添加BOM后,TAB分隔符不起作用。但是,如果我们用逗号(,)替换\ T,它能正常工作在Excel 2010中