Support for XSSFWorkbook and SXSSFWorkbook (xmlx format; POI 3.9+)
Introduces an AbstractXlsView and dedicated subclasses for POI's xmlx support. Deprecates the traditional AbstractExcelView which is based on pre POI 3.5 API. Issue: SPR-6898
This commit is contained in:
@@ -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.
|
||||
@@ -36,7 +36,6 @@ import org.apache.poi.hssf.usermodel.HSSFCell;
|
||||
import org.apache.poi.hssf.usermodel.HSSFRow;
|
||||
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -59,8 +58,6 @@ import static org.junit.Assert.*;
|
||||
@SuppressWarnings("deprecation")
|
||||
public class ExcelViewTests {
|
||||
|
||||
private MockServletContext servletCtx;
|
||||
|
||||
private MockHttpServletRequest request;
|
||||
|
||||
private MockHttpServletResponse response;
|
||||
@@ -70,7 +67,7 @@ public class ExcelViewTests {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
servletCtx = new MockServletContext("org/springframework/web/servlet/view/document");
|
||||
MockServletContext servletCtx = new MockServletContext("org/springframework/web/servlet/view/document");
|
||||
request = new MockHttpServletRequest(servletCtx);
|
||||
response = new MockHttpServletResponse();
|
||||
webAppCtx = new StaticWebApplicationContext();
|
||||
@@ -99,8 +96,7 @@ public class ExcelViewTests {
|
||||
|
||||
excelView.render(new HashMap<String, Object>(), request, response);
|
||||
|
||||
POIFSFileSystem poiFs = new POIFSFileSystem(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
HSSFWorkbook wb = new HSSFWorkbook(poiFs);
|
||||
HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
assertEquals("Test Sheet", wb.getSheetName(0));
|
||||
HSSFSheet sheet = wb.getSheet("Test Sheet");
|
||||
HSSFRow row = sheet.getRow(2);
|
||||
@@ -134,8 +130,7 @@ public class ExcelViewTests {
|
||||
excelView.setUrl("template");
|
||||
excelView.render(new HashMap<String, Object>(), request, response);
|
||||
|
||||
POIFSFileSystem poiFs = new POIFSFileSystem(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
HSSFWorkbook wb = new HSSFWorkbook(poiFs);
|
||||
HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
HSSFSheet sheet = wb.getSheet("Sheet1");
|
||||
HSSFRow row = sheet.getRow(0);
|
||||
HSSFCell cell = row.getCell(0);
|
||||
@@ -168,8 +163,7 @@ public class ExcelViewTests {
|
||||
excelView.setUrl("template");
|
||||
excelView.render(new HashMap<String, Object>(), request, response);
|
||||
|
||||
POIFSFileSystem poiFs = new POIFSFileSystem(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
HSSFWorkbook wb = new HSSFWorkbook(poiFs);
|
||||
HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
HSSFSheet sheet = wb.getSheet("Sheet1");
|
||||
HSSFRow row = sheet.getRow(0);
|
||||
HSSFCell cell = row.getCell(0);
|
||||
@@ -202,8 +196,7 @@ public class ExcelViewTests {
|
||||
excelView.setUrl("template");
|
||||
excelView.render(new HashMap<String, Object>(), request, response);
|
||||
|
||||
POIFSFileSystem poiFs = new POIFSFileSystem(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
HSSFWorkbook wb = new HSSFWorkbook(poiFs);
|
||||
HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
HSSFSheet sheet = wb.getSheet("Sheet1");
|
||||
HSSFRow row = sheet.getRow(0);
|
||||
HSSFCell cell = row.getCell(0);
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
/*
|
||||
* 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.document;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.mock.web.test.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.test.MockHttpServletResponse;
|
||||
import org.springframework.web.servlet.View;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Tests for AbstractXlsView and its subclasses.
|
||||
*
|
||||
* @author Juergen Hoeller
|
||||
* @since 4.2
|
||||
*/
|
||||
public class XlsViewTests {
|
||||
|
||||
private final MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
|
||||
private final MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
|
||||
|
||||
@Test
|
||||
public void testXls() throws Exception {
|
||||
View excelView = new AbstractXlsView() {
|
||||
@Override
|
||||
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook,
|
||||
HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
Sheet sheet = workbook.createSheet("Test Sheet");
|
||||
Row row = sheet.createRow(0);
|
||||
Cell cell = row.createCell(0);
|
||||
cell.setCellValue("Test Value");
|
||||
}
|
||||
};
|
||||
|
||||
excelView.render(new HashMap<String, Object>(), request, response);
|
||||
|
||||
Workbook wb = new HSSFWorkbook(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
assertEquals("Test Sheet", wb.getSheetName(0));
|
||||
Sheet sheet = wb.getSheet("Test Sheet");
|
||||
Row row = sheet.getRow(0);
|
||||
Cell cell = row.getCell(0);
|
||||
assertEquals("Test Value", cell.getStringCellValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testXlsxView() throws Exception {
|
||||
View excelView = new AbstractXlsxView() {
|
||||
@Override
|
||||
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook,
|
||||
HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
Sheet sheet = workbook.createSheet("Test Sheet");
|
||||
Row row = sheet.createRow(0);
|
||||
Cell cell = row.createCell(0);
|
||||
cell.setCellValue("Test Value");
|
||||
}
|
||||
};
|
||||
|
||||
excelView.render(new HashMap<String, Object>(), request, response);
|
||||
|
||||
Workbook wb = new XSSFWorkbook(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
assertEquals("Test Sheet", wb.getSheetName(0));
|
||||
Sheet sheet = wb.getSheet("Test Sheet");
|
||||
Row row = sheet.getRow(0);
|
||||
Cell cell = row.getCell(0);
|
||||
assertEquals("Test Value", cell.getStringCellValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testXlsxStreamingView() throws Exception {
|
||||
View excelView = new AbstractXlsxStreamingView() {
|
||||
@Override
|
||||
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook,
|
||||
HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
Sheet sheet = workbook.createSheet("Test Sheet");
|
||||
Row row = sheet.createRow(0);
|
||||
Cell cell = row.createCell(0);
|
||||
cell.setCellValue("Test Value");
|
||||
}
|
||||
};
|
||||
|
||||
excelView.render(new HashMap<String, Object>(), request, response);
|
||||
|
||||
Workbook wb = new XSSFWorkbook(new ByteArrayInputStream(response.getContentAsByteArray()));
|
||||
assertEquals("Test Sheet", wb.getSheetName(0));
|
||||
Sheet sheet = wb.getSheet("Test Sheet");
|
||||
Row row = sheet.getRow(0);
|
||||
Cell cell = row.getCell(0);
|
||||
assertEquals("Test Value", cell.getStringCellValue());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user