@@ -219,6 +219,10 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService { | |||
wb = ExcelCache.getWorkbook(teplateParams.getTemplateUrl(), teplateParams.getSheetNum(), | |||
true); | |||
int oldSheetNum = wb.getNumberOfSheets(); | |||
List<String> oldSheetName = new ArrayList<>(); | |||
for (int i = 0; i < oldSheetNum; i++) { | |||
oldSheetName.add(wb.getSheetName(i)); | |||
} | |||
// 把所有的KEY排个顺序 | |||
List<Map<String, Object>> mapList; | |||
List<Integer> sheetNumList = new ArrayList<>(); | |||
@@ -232,8 +236,8 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService { | |||
wb.cloneSheet(sheetNum); | |||
} | |||
} | |||
for (int i = 0; i < oldSheetNum; i++) { | |||
wb.removeSheetAt(i); | |||
for (int i = 0; i < oldSheetName.size(); i++) { | |||
wb.removeSheetAt(wb.getSheetIndex(oldSheetName.get(i))); | |||
} | |||
// 创建表格样式 | |||
setExcelExportStyler((IExcelExportStyler) teplateParams.getStyle() | |||
@@ -1,13 +1,13 @@ | |||
/** | |||
* Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) | |||
* | |||
* 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 | |||
* <p> | |||
* 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 | |||
* <p> | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* <p> | |||
* 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 | |||
@@ -15,22 +15,18 @@ | |||
*/ | |||
package cn.afterturn.easypoi.view; | |||
import java.util.Collections; | |||
import java.util.List; | |||
import java.util.Map; | |||
import javax.servlet.ServletOutputStream; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.servlet.http.HttpServletResponse; | |||
import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |||
import org.apache.poi.ss.usermodel.Workbook; | |||
import org.springframework.stereotype.Controller; | |||
import cn.afterturn.easypoi.entity.vo.BigExcelConstants; | |||
import cn.afterturn.easypoi.excel.ExcelExportUtil; | |||
import cn.afterturn.easypoi.excel.entity.ExportParams; | |||
import cn.afterturn.easypoi.handler.inter.IExcelExportServer; | |||
import org.apache.poi.ss.usermodel.Workbook; | |||
import org.springframework.stereotype.Controller; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.servlet.http.HttpServletResponse; | |||
import java.util.Collections; | |||
import java.util.List; | |||
import java.util.Map; | |||
/** | |||
* @author JueYue on 14-3-8. Excel 生成解析器,减少用户操作 | |||
@@ -47,36 +43,23 @@ public class EasypoiBigExcelExportView extends MiniAbstractExcelView { | |||
HttpServletResponse response) throws Exception { | |||
String codedFileName = "临时文件"; | |||
Workbook workbook = ExcelExportUtil.exportBigExcel( | |||
(ExportParams) model.get(BigExcelConstants.PARAMS), | |||
(Class<?>) model.get(BigExcelConstants.CLASS), Collections.EMPTY_LIST); | |||
(ExportParams) model.get(BigExcelConstants.PARAMS), | |||
(Class<?>) model.get(BigExcelConstants.CLASS), Collections.EMPTY_LIST); | |||
IExcelExportServer server = (IExcelExportServer) model.get(BigExcelConstants.DATA_INTER); | |||
int page = 1; | |||
int page = 1; | |||
List<Object> list = server | |||
.selectListForExcelExport(model.get(BigExcelConstants.DATA_PARAMS), page++); | |||
.selectListForExcelExport(model.get(BigExcelConstants.DATA_PARAMS), page++); | |||
while (list != null && list.size() > 0) { | |||
workbook = ExcelExportUtil.exportBigExcel( | |||
(ExportParams) model.get(BigExcelConstants.PARAMS), | |||
(Class<?>) model.get(BigExcelConstants.CLASS), list); | |||
(ExportParams) model.get(BigExcelConstants.PARAMS), | |||
(Class<?>) model.get(BigExcelConstants.CLASS), list); | |||
list = server.selectListForExcelExport(model.get(BigExcelConstants.DATA_PARAMS), | |||
page++); | |||
page++); | |||
} | |||
ExcelExportUtil.closeExportBigExcel(); | |||
if (model.containsKey(BigExcelConstants.FILE_NAME)) { | |||
codedFileName = (String) model.get(BigExcelConstants.FILE_NAME); | |||
} | |||
if (workbook instanceof HSSFWorkbook) { | |||
codedFileName += HSSF; | |||
} else { | |||
codedFileName += XSSF; | |||
} | |||
if (isIE(request)) { | |||
codedFileName = java.net.URLEncoder.encode(codedFileName, "UTF8"); | |||
} else { | |||
codedFileName = new String(codedFileName.getBytes("UTF-8"), "ISO-8859-1"); | |||
} | |||
response.setHeader("content-disposition", "attachment;filename=" + codedFileName); | |||
ServletOutputStream out = response.getOutputStream(); | |||
workbook.write(out); | |||
out.flush(); | |||
out(workbook, codedFileName, request, response); | |||
} | |||
} |
@@ -57,20 +57,7 @@ public class EasypoiMapExcelView extends MiniAbstractExcelView { | |||
if (model.containsKey(MapExcelConstants.FILE_NAME)) { | |||
codedFileName = (String) model.get(MapExcelConstants.FILE_NAME); | |||
} | |||
if (workbook instanceof HSSFWorkbook) { | |||
codedFileName += HSSF; | |||
} else { | |||
codedFileName += XSSF; | |||
} | |||
if (isIE(request)) { | |||
codedFileName = java.net.URLEncoder.encode(codedFileName, "UTF8"); | |||
} else { | |||
codedFileName = new String(codedFileName.getBytes("UTF-8"), "ISO-8859-1"); | |||
} | |||
response.setHeader("content-disposition", "attachment;filename=" + codedFileName); | |||
ServletOutputStream out = response.getOutputStream(); | |||
workbook.write(out); | |||
out.flush(); | |||
out(workbook, codedFileName, request, response); | |||
} | |||
} |
@@ -73,19 +73,6 @@ public class EasypoiSingleExcelView extends MiniAbstractExcelView { | |||
if (model.containsKey(NormalExcelConstants.FILE_NAME)) { | |||
codedFileName = (String) model.get(NormalExcelConstants.FILE_NAME); | |||
} | |||
if (workbook instanceof HSSFWorkbook) { | |||
codedFileName += HSSF; | |||
} else { | |||
codedFileName += XSSF; | |||
} | |||
if (isIE(request)) { | |||
codedFileName = java.net.URLEncoder.encode(codedFileName, "UTF8"); | |||
} else { | |||
codedFileName = new String(codedFileName.getBytes("UTF-8"), "ISO-8859-1"); | |||
} | |||
response.setHeader("content-disposition", "attachment;filename=" + codedFileName); | |||
ServletOutputStream out = response.getOutputStream(); | |||
workbook.write(out); | |||
out.flush(); | |||
out(workbook, codedFileName, request, response); | |||
} | |||
} |
@@ -58,19 +58,6 @@ public class EasypoiTemplateExcelView extends MiniAbstractExcelView { | |||
if (model.containsKey(NormalExcelConstants.FILE_NAME)) { | |||
codedFileName = (String) model.get(NormalExcelConstants.FILE_NAME); | |||
} | |||
if (workbook instanceof HSSFWorkbook) { | |||
codedFileName += HSSF; | |||
} else { | |||
codedFileName += XSSF; | |||
} | |||
if (isIE(request)) { | |||
codedFileName = java.net.URLEncoder.encode(codedFileName, "UTF8"); | |||
} else { | |||
codedFileName = new String(codedFileName.getBytes("UTF-8"), "ISO-8859-1"); | |||
} | |||
response.setHeader("content-disposition", "attachment;filename=" + codedFileName); | |||
ServletOutputStream out = response.getOutputStream(); | |||
workbook.write(out); | |||
out.flush(); | |||
out(workbook, codedFileName, request, response); | |||
} | |||
} |
@@ -63,20 +63,7 @@ public class MapGraphExcelView extends MiniAbstractExcelView { | |||
if (model.containsKey(MapExcelGraphConstants.FILE_NAME)) { | |||
codedFileName = (String) model.get(MapExcelGraphConstants.FILE_NAME); | |||
} | |||
if (workbook instanceof HSSFWorkbook) { | |||
codedFileName += HSSF; | |||
} else { | |||
codedFileName += XSSF; | |||
} | |||
if (isIE(request)) { | |||
codedFileName = java.net.URLEncoder.encode(codedFileName, "UTF8"); | |||
} else { | |||
codedFileName = new String(codedFileName.getBytes("UTF-8"), "ISO-8859-1"); | |||
} | |||
response.setHeader("content-disposition", "attachment;filename=" + codedFileName); | |||
ServletOutputStream out = response.getOutputStream(); | |||
workbook.write(out); | |||
out.flush(); | |||
out(workbook, codedFileName, request, response); | |||
} | |||
} |
@@ -1,13 +1,13 @@ | |||
/** | |||
* Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) | |||
* | |||
* 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 | |||
* <p> | |||
* 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 | |||
* <p> | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* <p> | |||
* 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 | |||
@@ -15,6 +15,13 @@ | |||
*/ | |||
package cn.afterturn.easypoi.view; | |||
import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |||
import org.apache.poi.ss.usermodel.Workbook; | |||
import javax.servlet.ServletOutputStream; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.servlet.http.HttpServletResponse; | |||
/** | |||
* 基础抽象Excel View | |||
* @author JueYue | |||
@@ -22,13 +29,32 @@ package cn.afterturn.easypoi.view; | |||
*/ | |||
public abstract class MiniAbstractExcelView extends PoiBaseView { | |||
private static final String CONTENT_TYPE = "text/html;application/vnd.ms-excel"; | |||
private static final String CONTENT_TYPE = "text/html;application/vnd.ms-excel"; | |||
protected static final String HSSF = ".xls"; | |||
protected static final String XSSF = ".xlsx"; | |||
protected static final String HSSF = ".xls"; | |||
protected static final String XSSF = ".xlsx"; | |||
public MiniAbstractExcelView() { | |||
setContentType(CONTENT_TYPE); | |||
} | |||
public void out(Workbook workbook, String codedFileName, HttpServletRequest request, | |||
HttpServletResponse response) throws Exception { | |||
if (workbook instanceof HSSFWorkbook) { | |||
codedFileName += HSSF; | |||
} else { | |||
codedFileName += XSSF; | |||
} | |||
if (isIE(request)) { | |||
codedFileName = java.net.URLEncoder.encode(codedFileName, "UTF8"); | |||
} else { | |||
codedFileName = new String(codedFileName.getBytes("UTF-8"), "ISO-8859-1"); | |||
} | |||
response.setHeader("content-disposition", "attachment;filename=" + codedFileName); | |||
ServletOutputStream out = response.getOutputStream(); | |||
workbook.write(out); | |||
out.flush(); | |||
} | |||
} |