web-dev-qa-db-ja.com

JasperReportsはxlsではなくxlsxにエクスポートします

JasperReports4.1.1で.xlsxのファイルをエクスポートする方法が見つかりません。クラス:

JRXlsExporter

xlsxに相当するものはありません。また、出力形式をxlsからxlsxに設定するためのパラメーターが見つかりません。

10
AgostinoX

JRXlsxExporter クラスは[〜#〜] xlsxでのエクスポートに使用する必要があります[〜#〜]形式。

5.5.2バージョンより前のJasperReportsでエクスポーターを使用したサンプル

JasperReports 5.5.1まで、このコードはxlsx形式でレポートを生成するために使用できます。

JRMapArrayDataSource dataSource = new JRMapArrayDataSource(data);

JasperReport jasperReport = JasperCompileManager.compileReport(reportJRXMLSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);

JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME, outputFileName);

exporter.exportReport();

ライブラリの5.5.2バージョン以降、JRAbstractExporter.setParameter(JRExporterParameter、Object)メソッドは非推奨になりました。

最新のJasperReportsバージョンでエクスポーターを使用するサンプル

この例では、JRS 6.4.1バージョンを使用しました。

JasperReport jasperReport;
try (InputStream inputStream = JRLoader.getResourceInputStream(jrxmlFilePath)) {
    jasperReport = JasperCompileManager.compileReport(JRXmlLoader.load(inputStream));
}
Map<String, Object> params = new HashMap<>();

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());

SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
configuration.setOnePagePerSheet(true);
configuration.setIgnoreGraphics(false);

File outputFile = new File("output.xlsx");
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
     OutputStream fileOutputStream = new FileOutputStream(outputFile)) {
    Exporter exporter = new JRXlsxExporter();
    exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
    exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(byteArrayOutputStream));
    exporter.setConfiguration(configuration);
    exporter.exportReport();
    byteArrayOutputStream.writeTo(fileOutputStream);
}

JRExporter.setParameterメソッドを使用する代わりに、 XlsReportConfiguration インターフェイスの実装を使用する必要があります。上記の例では、JRXlsxExporterに固有の設定を定義するために、XlsReportConfigurationSimpleXlsxReportConfiguration実装を使用しました。 )エクスポーター。


詳しくは

19
Alex K

この答えは、JASPER REPORT VERSION> 5.6(最新バージョン)でユーザーを支援するためのものです。したがって、非推奨のコードを削除してください。

それ以降のバージョン> 5.6では、JRXlsxExporter.setParameter(..)deprecatedになっています。

あなたは使用する必要があります

JRMapArrayDataSource dataSource = new JRMapArrayDataSource(data);

JasperReport jasperReport = JasperCompileManager.compileReport(reportJRXMLSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);

JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
File outputFile = new File("excelTest.xlsx");
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputFile));
SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration(); 
configuration.setDetectCellType(true);//Set configuration as you like it!!
configuration.setCollapseRowSpan(false);
exporter.setConfiguration(configuration);
exporter.exportReport();
14
Petter Friberg

あなたがする必要があるのは、このようにリクエストパスにフォーマットを入れることです:

@RequestMapping( value = "/ActivityReport.xlsx", method = RequestMethod.GET )
public ModelAndView generateActivityReportXLS( HttpServletRequest request, HttpServletResponse response ) {


    List<ActivityDisplay> list = activityManager.listActivities();

    Map<String, Object> parameterMap = new HashMap<>();
    parameterMap.put( "datasource", new JRBeanCollectionDataSource( list ) );
    return new ModelAndView( "activitiesXLSView", parameterMap );
}
2
user3862848

JRXlsExporterは、JasperReports4.5以降のバージョンで使用できます。

0
Chi Nguyen