2010-02-17 6 views
3

큰 (그러나 간단한) 보고서를 생성하기 위해 jasperreports 3.5.3을 사용하고 있습니다. 문자열이있는 테이블 만.Excel에 대한 대형 재 스퍼 보고서가 손상된 파일을 야기합니다.

큰 선택 항목을 나열하면 생성 된 파일이 손상됩니다. Excel이 사용자에게 경고하고 일부 데이터가 손상되었습니다. 하지만 데이터를 필터링하여 문제가되는 행을 포함하여 일부 행을 표시하면 정상적으로 생성됩니다.

누군가이 손상된 파일을 사용한 경험이 있습니까?

팁 : Linux/Apache + JBoss 서버에서 발생하지만 로컬 Windows/Jboss에서 동일한 코드가 정상적으로 작동합니다. 중간에 아파치가 할 일이 없다고 생각합니다. 그것은 세대 자체의 어떤 것이어야합니다.

+0

이것은 3.6.0에서 수정 된 버그입니다. http://jasperforge.org/projects/jasperreports/tracker/view.php?id=4014 –

답변

2

jasperreports 3.5.3은 두 종류의 "Excel 작성자"를 사용할 수 있습니다. 기본적으로 익스포터는 JRXlsExporter이고, 큰 파일에는 (적어도 Spring MVC 프로젝트에서는) 잘 작동하지 않습니다.

해결 방법은 JExcelAPI를 기반으로하는 다른 내보내기 도구를 사용하는 것입니다. 이 데이터로 문제없이 데이터를 내보낼 수 있습니다.

jasperreport는 Spring MVC 설치에 JExcelAPI를 사용하여 맞춤 클래스를 작성해야합니다. 매우 간단합니다 :

import net.sf.jasperreports.engine.JRExporter; 
import net.sf.jasperreports.engine.export.JExcelApiExporter; 

import org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsSingleFormatView; 

// this is the view class you'll use, instead of JasperReportsXlsView 
public class JasperReportsJExcelApiView extends AbstractJasperReportsSingleFormatView 
{ 
    // copied from JasperReportsXlsView 
    public JasperReportsJExcelApiView() 
    { 
     setContentType("application/vnd.ms-excel"); 
    } 

    protected JRExporter createExporter() 
    { 
     // we create the JExcelAPIExporter, not the JRXlsExporter 
     return new JExcelApiExporter(); 
    } 

    // copied from JasperReportsXlsView (I think it says: write binary data, not text) 
    protected boolean useWriter() 
    { 
     return false; 
    } 
} 

JExcelAPI 2.6 배포에서 classpath에 jxl.jar가 필요합니다.

관련 문제