diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/jasperreports/JasperReportsMultiFormatView.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/jasperreports/JasperReportsMultiFormatView.java index e1f74c277ab..7e9af07d16b 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/jasperreports/JasperReportsMultiFormatView.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/jasperreports/JasperReportsMultiFormatView.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; /** - * Jasper Reports view class that allows for the actual rendering format + * JasperReports view class that allows for the actual rendering format * to be specified at runtime using a parameter contained in the model. * *

This view works on the concept of a format key and a mapping key. @@ -53,6 +53,7 @@ import org.springframework.util.CollectionUtils; *

  • {@code html} - {@code JasperReportsHtmlView}
  • *
  • {@code pdf} - {@code JasperReportsPdfView}
  • *
  • {@code xls} - {@code JasperReportsXlsView}
  • + *
  • {@code xlsx} - {@code JasperReportsXlsxView}
  • (as of Spring 4.2) * * *

    The format key can be changed using the {@code formatKey} property. @@ -100,6 +101,7 @@ public class JasperReportsMultiFormatView extends AbstractJasperReportsView { this.formatMappings.put("html", JasperReportsHtmlView.class); this.formatMappings.put("pdf", JasperReportsPdfView.class); this.formatMappings.put("xls", JasperReportsXlsView.class); + this.formatMappings.put("xlsx", JasperReportsXlsxView.class); } @@ -119,6 +121,7 @@ public class JasperReportsMultiFormatView extends AbstractJasperReportsView { *

  • {@code html} - {@code JasperReportsHtmlView}
  • *
  • {@code pdf} - {@code JasperReportsPdfView}
  • *
  • {@code xls} - {@code JasperReportsXlsView}
  • + *
  • {@code xlsx} - {@code JasperReportsXlsxView}
  • (as of Spring 4.2) * */ public void setFormatMappings(Map> formatMappings) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/jasperreports/JasperReportsXlsxView.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/jasperreports/JasperReportsXlsxView.java new file mode 100644 index 00000000000..f86f3ce2920 --- /dev/null +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/jasperreports/JasperReportsXlsxView.java @@ -0,0 +1,50 @@ +/* + * Copyright 2002-2015 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.web.servlet.view.jasperreports; + +import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter; + +/** + * Implementation of {@code AbstractJasperReportsSingleFormatView} + * that renders report results in XLSX format. + * + *

    This class is compatible with classic JasperReports releases back until 2.x. + * As a consequence, it keeps using the {@link net.sf.jasperreports.engine.JRExporter} + * API which got deprecated as of JasperReports 5.5.2 (early 2014). + * + * @author Rob Harrop + * @author Juergen Hoeller + * @since 4.2 + */ +@SuppressWarnings({"deprecation", "rawtypes"}) +public class JasperReportsXlsxView extends AbstractJasperReportsSingleFormatView { + + public JasperReportsXlsxView() { + setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + } + + @Override + protected net.sf.jasperreports.engine.JRExporter createExporter() { + return new JRXlsxExporter(); + } + + @Override + protected boolean useWriter() { + return false; + } + +} diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/view/jasperreports/JasperReportsXlsxViewTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/view/jasperreports/JasperReportsXlsxViewTests.java new file mode 100644 index 00000000000..163c560602f --- /dev/null +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/view/jasperreports/JasperReportsXlsxViewTests.java @@ -0,0 +1,35 @@ +/* + * Copyright 2002-2015 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.web.servlet.view.jasperreports; + +/** + * @author Juergen Hoeller + * @since 4.2 + */ +public class JasperReportsXlsxViewTests extends AbstractJasperReportsViewTests { + + @Override + protected AbstractJasperReportsView getViewImplementation() { + return new JasperReportsXlsxView(); + } + + @Override + protected String getDesiredContentType() { + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + } + +}