| @@ -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(); | |||
| } | |||
| } | |||