From faa63e9bd7d40b1458b78b120f27665ee7630a31 Mon Sep 17 00:00:00 2001 From: jueyue Date: Tue, 2 Dec 2014 10:45:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=20=E7=89=88=E6=9C=AC=E7=9A=84=E9=80=89=E6=8B=A9,03=E5=92=8C07?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poi/excel/ExcelExportUtil.java | 41 +++++--- .../poi/excel/entity/ExportParams.java | 15 +++ .../poi/excel/entity/vo/PoiBaseConstants.java | 24 ++++- .../poi/excel/export/ExcelExportServer.java | 93 ++++++++++--------- .../excel/export/base/ExcelExportBase.java | 53 +++++++---- .../poi/excel/MyExcelExport.java | 19 ++-- .../poi/excel/test/ExcelExportForMap.java | 42 ++++++++- .../test/ExcelExportUtilDataHandlerTest.java | 3 +- .../poi/excel/test/ExcelExportUtilIdTest.java | 3 +- .../poi/excel/test/ExcelExportUtilTest.java | 7 +- .../poi/excel/view/JeecgMapExcelView.java | 3 +- .../poi/excel/view/JeecgSingleExcelView.java | 7 +- 12 files changed, 213 insertions(+), 97 deletions(-) diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java index 16599cc..e121a09 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java @@ -6,9 +6,11 @@ import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.TemplateExportParams; import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; +import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; import org.jeecgframework.poi.excel.export.ExcelExportServer; import org.jeecgframework.poi.excel.export.template.ExcelExportOfTemplateUtil; @@ -29,14 +31,20 @@ public final class ExcelExportUtil { * @param dataSet * Excel对象数据List */ - public static HSSFWorkbook exportExcel(ExportParams entity, Class pojoClass, - Collection dataSet) { - HSSFWorkbook workbook = new HSSFWorkbook(); - new ExcelExportServer().createSheet(workbook, entity, pojoClass, dataSet); + public static Workbook exportExcel(ExportParams entity, Class pojoClass, + Collection dataSet) { + Workbook workbook; + if (entity.getType().equals(PoiBaseConstants.HSSF)) { + workbook = new HSSFWorkbook(); + } else { + workbook = new XSSFWorkbook(); + } + new ExcelExportServer().createSheet(workbook, entity, pojoClass, dataSet, entity.getType()); return workbook; } /** + * 根据Map创建对应的Excel * @param entity * 表格标题属性 * @param pojoClass @@ -44,10 +52,16 @@ public final class ExcelExportUtil { * @param dataSet * Excel对象数据List */ - public static HSSFWorkbook exportExcel(ExportParams entity, List entityList, - Collection> dataSet) { - HSSFWorkbook workbook = new HSSFWorkbook(); - new ExcelExportServer().createSheetForMap(workbook, entity, entityList, dataSet); + public static Workbook exportExcel(ExportParams entity, List entityList, + Collection> dataSet) { + Workbook workbook; + if (entity.getType().equals(PoiBaseConstants.HSSF)) { + workbook = new HSSFWorkbook(); + } else { + workbook = new XSSFWorkbook(); + } + new ExcelExportServer().createSheetForMap(workbook, entity, entityList, dataSet, + entity.getType()); return workbook; } @@ -59,12 +73,17 @@ public final class ExcelExportUtil { * Collection 数据 * @return */ - public static HSSFWorkbook exportExcel(List> list) { - HSSFWorkbook workbook = new HSSFWorkbook(); + public static Workbook exportExcel(List> list, String type) { + Workbook workbook; + if (type.equals(PoiBaseConstants.HSSF)) { + workbook = new HSSFWorkbook(); + } else { + workbook = new XSSFWorkbook(); + } ExcelExportServer server = new ExcelExportServer(); for (Map map : list) { server.createSheet(workbook, (ExportParams) map.get("title"), - (Class) map.get("entity"), (Collection) map.get("data")); + (Class) map.get("entity"), (Collection) map.get("data"), type); } return workbook; } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ExportParams.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ExportParams.java index bf9cb4e..3fe6bbd 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ExportParams.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ExportParams.java @@ -1,6 +1,7 @@ package org.jeecgframework.poi.excel.entity; import org.apache.poi.hssf.util.HSSFColor; +import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; /** * Excel 导出参数 @@ -49,9 +50,15 @@ public class ExportParams extends ExcelBaseParams { * 属性说明行的颜色 例如:HSSFColor.SKY_BLUE.index 默认 */ private short headerColor = HSSFColor.SKY_BLUE.index; + /** + * Excel 导出版本 + */ + private String type = PoiBaseConstants.HSSF; + public ExportParams() { } + public ExportParams(String title, String sheetName) { this.title = title; this.sheetName = sheetName; @@ -134,4 +141,12 @@ public class ExportParams extends ExcelBaseParams { public void setTitleHeight(short titleHeight) { this.titleHeight = titleHeight; } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/vo/PoiBaseConstants.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/vo/PoiBaseConstants.java index 05abc02..c2d83dc 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/vo/PoiBaseConstants.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/vo/PoiBaseConstants.java @@ -5,13 +5,29 @@ package org.jeecgframework.poi.excel.entity.vo; * Created by jue on 14-4-21. */ public interface PoiBaseConstants { - + /** + * 字段属性对应方法 + */ public static String GET = "get"; - + /** + * 字段属性对应方法 + */ public static String SET = "set"; - + /** + * 字段属性对应方法 + */ public static String IS = "is"; - + /** + * 是否增加属性列 + */ public static String IS_ADD_INDEX = "isAddIndex"; + /** + * 03版本Excel + */ + public static String HSSF = "HSSF"; + /** + * 07版本Excel + */ + public static String XSSF = "XSSF"; } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java index 1ccaf47..5218e1e 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java @@ -9,15 +9,13 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import org.apache.poi.hssf.usermodel.HSSFCellStyle; -import org.apache.poi.hssf.usermodel.HSSFDataFormat; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.hssf.util.HSSFColor; +import org.apache.poi.ss.usermodel.BuiltinFormats; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Drawing; import org.apache.poi.ss.usermodel.Font; 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.ss.util.CellRangeAddress; import org.jeecgframework.poi.excel.annotation.ExcelTarget; import org.jeecgframework.poi.excel.entity.ExportParams; @@ -40,12 +38,12 @@ public class ExcelExportServer extends ExcelExportBase { private final static Logger logger = LoggerFactory.getLogger(ExcelExportServer.class); - private static final short cellFormat = HSSFDataFormat.getBuiltinFormat("TEXT"); + private static final short cellFormat = (short) BuiltinFormats.getBuiltinFormat("TEXT"); // 最大行数,超过自动多Sheet - private final int MAX_NUM = 60000; + private int MAX_NUM = 60000; - private int createHeaderAndTitle(ExportParams entity, Sheet sheet, HSSFWorkbook workbook, + private int createHeaderAndTitle(ExportParams entity, Sheet sheet, Workbook workbook, List excelParams) { int rows = 0, feildWidth = getFieldWidth(excelParams); if (entity.getTitle() != null) { @@ -64,8 +62,7 @@ public class ExcelExportServer extends ExcelExportBase { * @param workbook * @param feildWidth */ - public int createHeaderRow(ExportParams entity, Sheet sheet, HSSFWorkbook workbook, - int feildWidth) { + public int createHeaderRow(ExportParams entity, Sheet sheet, Workbook workbook, int feildWidth) { Row row = sheet.createRow(0); row.setHeight(entity.getTitleHeight()); createStringCell(row, 0, entity.getTitle(), getHeaderStyle(workbook, entity), null); @@ -73,8 +70,8 @@ public class ExcelExportServer extends ExcelExportBase { if (entity.getSecondTitle() != null) { row = sheet.createRow(1); row.setHeight(entity.getSecondTitleHeight()); - HSSFCellStyle style = workbook.createCellStyle(); - style.setAlignment(HSSFCellStyle.ALIGN_RIGHT); + CellStyle style = workbook.createCellStyle(); + style.setAlignment(CellStyle.ALIGN_RIGHT); createStringCell(row, 0, entity.getSecondTitle(), style, null); sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, feildWidth)); return 2; @@ -82,14 +79,19 @@ public class ExcelExportServer extends ExcelExportBase { return 1; } - public void createSheet(HSSFWorkbook workbook, ExportParams entity, Class pojoClass, - Collection dataSet) { + public void createSheet(Workbook workbook, ExportParams entity, Class pojoClass, + Collection dataSet, String type) { if (logger.isDebugEnabled()) { logger.debug("Excel export start ,class is {}", pojoClass); + logger.debug("Excel version is {}", type.equals(PoiBaseConstants.HSSF) ? "03" : "07"); } if (workbook == null || entity == null || pojoClass == null || dataSet == null) { throw new ExcelExportException(ExcelExportEnum.PARAMETER_ERROR); } + if (type.equals(PoiBaseConstants.XSSF)) { + MAX_NUM = 1000000; + } + super.type = type; Sheet sheet = null; try { sheet = workbook.createSheet(entity.getSheetName()); @@ -103,7 +105,7 @@ public class ExcelExportServer extends ExcelExportBase { needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields()); } // 创建表格属性 - Map styles = createStyles(workbook); + Map styles = createStyles(workbook); Drawing patriarch = sheet.createDrawingPatriarch(); List excelParams = new ArrayList(); if (entity.isAddIndex()) { @@ -139,7 +141,7 @@ public class ExcelExportServer extends ExcelExportBase { } // 发现还有剩余list 继续循环创建Sheet if (dataSet.size() > 0) { - createSheet(workbook, entity, pojoClass, dataSet); + createSheet(workbook, entity, pojoClass, dataSet, type); } } catch (Exception e) { @@ -148,12 +150,19 @@ public class ExcelExportServer extends ExcelExportBase { } } - public void createSheetForMap(HSSFWorkbook workbook, ExportParams entity, + public void createSheetForMap(Workbook workbook, ExportParams entity, List entityList, - Collection> dataSet) { + Collection> dataSet, String type) { + if (logger.isDebugEnabled()) { + logger.debug("Excel version is {}", type.equals(PoiBaseConstants.HSSF) ? "03" : "07"); + } if (workbook == null || entity == null || entityList == null || dataSet == null) { throw new ExcelExportException(ExcelExportEnum.PARAMETER_ERROR); } + if (type.equals(PoiBaseConstants.XSSF)) { + MAX_NUM = 1000000; + } + super.type = type; Sheet sheet = null; try { sheet = workbook.createSheet(entity.getSheetName()); @@ -167,7 +176,7 @@ public class ExcelExportServer extends ExcelExportBase { needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields()); } // 创建表格属性 - Map styles = createStyles(workbook); + Map styles = createStyles(workbook); Drawing patriarch = sheet.createDrawingPatriarch(); List excelParams = new ArrayList(); if (entity.isAddIndex()) { @@ -199,7 +208,7 @@ public class ExcelExportServer extends ExcelExportBase { } // 发现还有剩余list 继续循环创建Sheet if (dataSet.size() > 0) { - createSheetForMap(workbook, entity, entityList, dataSet); + createSheetForMap(workbook, entity, entityList, dataSet, type); } } catch (Exception e) { @@ -209,8 +218,8 @@ public class ExcelExportServer extends ExcelExportBase { } } - private Map createStyles(HSSFWorkbook workbook) { - Map map = new HashMap(); + private Map createStyles(Workbook workbook) { + Map map = new HashMap(); map.put("one", getOneStyle(workbook, false)); map.put("oneWrap", getOneStyle(workbook, true)); map.put("two", getTwoStyle(workbook, false)); @@ -224,7 +233,7 @@ public class ExcelExportServer extends ExcelExportBase { * @param title * @param index */ - private int createTitleRow(ExportParams title, Sheet sheet, HSSFWorkbook workbook, int index, + private int createTitleRow(ExportParams title, Sheet sheet, Workbook workbook, int index, List excelParams) { Row row = sheet.createRow(index); int rows = getRowNums(excelParams); @@ -264,25 +273,25 @@ public class ExcelExportServer extends ExcelExportBase { * @param workbook * @return */ - public HSSFCellStyle getHeaderStyle(HSSFWorkbook workbook, ExportParams entity) { - HSSFCellStyle titleStyle = workbook.createCellStyle(); + public CellStyle getHeaderStyle(Workbook workbook, ExportParams entity) { + CellStyle titleStyle = workbook.createCellStyle(); Font font = workbook.createFont(); font.setFontHeightInPoints((short) 24); titleStyle.setFont(font); titleStyle.setFillForegroundColor(entity.getColor()); - titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); - titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); + titleStyle.setAlignment(CellStyle.ALIGN_CENTER); + titleStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); return titleStyle; } - public HSSFCellStyle getOneStyle(HSSFWorkbook workbook, boolean isWarp) { - HSSFCellStyle style = workbook.createCellStyle(); + public CellStyle getOneStyle(Workbook workbook, boolean isWarp) { + CellStyle style = workbook.createCellStyle(); style.setBorderLeft((short) 1); // 左边框 style.setBorderRight((short) 1); // 右边框 style.setBorderBottom((short) 1); style.setBorderTop((short) 1); - style.setAlignment(HSSFCellStyle.ALIGN_CENTER); - style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); style.setDataFormat(cellFormat); if (isWarp) { style.setWrapText(true); @@ -305,7 +314,7 @@ public class ExcelExportServer extends ExcelExportBase { return 1; } - public CellStyle getStyles(Map map, boolean needOne, boolean isWrap) { + public CellStyle getStyles(Map map, boolean needOne, boolean isWrap) { if (needOne && isWrap) { return map.get("oneWrap"); } @@ -324,26 +333,26 @@ public class ExcelExportServer extends ExcelExportBase { * @param workbook * @return */ - public HSSFCellStyle getTitleStyle(HSSFWorkbook workbook, ExportParams entity) { - HSSFCellStyle titleStyle = workbook.createCellStyle(); + public CellStyle getTitleStyle(Workbook workbook, ExportParams entity) { + CellStyle titleStyle = workbook.createCellStyle(); titleStyle.setFillForegroundColor(entity.getHeaderColor()); // 填充的背景颜色 - titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); - titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); - titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); // 填充图案 + titleStyle.setAlignment(CellStyle.ALIGN_CENTER); + titleStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); + titleStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); // 填充图案 titleStyle.setWrapText(true); return titleStyle; } - public HSSFCellStyle getTwoStyle(HSSFWorkbook workbook, boolean isWarp) { - HSSFCellStyle style = workbook.createCellStyle(); + public CellStyle getTwoStyle(Workbook workbook, boolean isWarp) { + CellStyle style = workbook.createCellStyle(); style.setBorderLeft((short) 1); // 左边框 style.setBorderRight((short) 1); // 右边框 style.setBorderBottom((short) 1); style.setBorderTop((short) 1); - style.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.index); // 填充的背景颜色 - style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); // 填充图案 - style.setAlignment(HSSFCellStyle.ALIGN_CENTER); - style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); + style.setFillForegroundColor((short) 41); // 填充的背景颜色 + style.setFillPattern(CellStyle.SOLID_FOREGROUND); // 填充图案 + style.setAlignment(CellStyle.ALIGN_CENTER); + style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); style.setDataFormat(cellFormat); if (isWarp) { style.setWrapText(true); diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java index af48218..2fbc90a 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java @@ -14,18 +14,19 @@ import java.util.Set; import javax.imageio.ImageIO; import org.apache.commons.lang.StringUtils; -import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFClientAnchor; import org.apache.poi.hssf.usermodel.HSSFRichTextString; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.ClientAnchor; import org.apache.poi.ss.usermodel.Drawing; import org.apache.poi.ss.usermodel.RichTextString; 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.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFClientAnchor; +import org.apache.poi.xssf.usermodel.XSSFRichTextString; import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; import org.jeecgframework.poi.excel.entity.params.MergeEntity; import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; @@ -39,7 +40,9 @@ import org.jeecgframework.poi.util.POIPublicUtil; */ public abstract class ExcelExportBase extends ExportBase { - private int currentIndex = 0; + private int currentIndex = 0; + + protected String type = PoiBaseConstants.HSSF; private boolean checkIsEqualByCellContents(MergeEntity mergeEntity, String text, Cell cell, int[] delys, int rowNum) { @@ -69,7 +72,7 @@ public abstract class ExcelExportBase extends ExportBase { */ public int createCells(Drawing patriarch, int index, Object t, List excelParams, Sheet sheet, Workbook workbook, - Map styles, short rowHeight) throws Exception { + Map styles, short rowHeight) throws Exception { ExcelExportEntity entity; Row row = sheet.createRow(index); row.setHeight(rowHeight); @@ -128,29 +131,37 @@ public abstract class ExcelExportBase extends ExportBase { * @param entity * @param row * @param i - * @param string + * @param imagePath * @param obj * @throws Exception */ public void createImageCell(Drawing patriarch, ExcelExportEntity entity, Row row, int i, - String string, Object obj) throws Exception { + String imagePath, Object obj) throws Exception { row.setHeight((short) (50 * entity.getHeight())); row.createCell(i); - HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, (short) i, row.getRowNum(), - (short) (i + 1), row.getRowNum() + 1); - if (StringUtils.isEmpty(string)) { + ClientAnchor anchor; + if (type.equals(PoiBaseConstants.HSSF)) { + anchor = new HSSFClientAnchor(0, 0, 0, 0, (short) i, row.getRowNum(), (short) (i + 1), + row.getRowNum() + 1); + } else { + anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) i, row.getRowNum(), (short) (i + 1), + row.getRowNum() + 1); + } + + if (StringUtils.isEmpty(imagePath)) { return; } if (entity.getExportImageType() == 1) { ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); BufferedImage bufferImg; try { - String path = POIPublicUtil.getWebRootPath(string); + String path = POIPublicUtil.getWebRootPath(imagePath); path = path.replace("WEB-INF/classes/", ""); path = path.replace("file:/", ""); bufferImg = ImageIO.read(new File(path)); ImageIO.write(bufferImg, - string.substring(string.indexOf(".") + 1, string.length()), byteArrayOut); + imagePath.substring(imagePath.indexOf(".") + 1, imagePath.length()), + byteArrayOut); byte[] value = byteArrayOut.toByteArray(); patriarch.createPicture(anchor, row.getSheet().getWorkbook().addPicture(value, getImageType(value))); @@ -168,7 +179,7 @@ public abstract class ExcelExportBase extends ExportBase { } - private int createIndexCell(Row row, Map styles, int index, + private int createIndexCell(Row row, Map styles, int index, ExcelExportEntity excelExportEntity) { if (excelExportEntity.getName().equals("序号") && excelExportEntity.getFormat().equals(PoiBaseConstants.IS_ADD_INDEX)) { @@ -188,8 +199,7 @@ public abstract class ExcelExportBase extends ExportBase { */ public void createListCells(Drawing patriarch, int index, int cellNum, Object obj, List excelParams, Sheet sheet, - Workbook workbook, Map styles) - throws Exception { + Workbook workbook, Map styles) throws Exception { ExcelExportEntity entity; Row row; if (sheet.getRow(index) == null) { @@ -234,7 +244,12 @@ public abstract class ExcelExportBase extends ExportBase { public void createStringCell(Row row, int index, String text, CellStyle style, ExcelExportEntity entity) { Cell cell = row.createCell(index); - RichTextString Rtext = new HSSFRichTextString(text); + RichTextString Rtext; + if (type.equals(PoiBaseConstants.HSSF)) { + Rtext = new HSSFRichTextString(text); + } else { + Rtext = new XSSFRichTextString(text); + } cell.setCellValue(Rtext); if (style != null) { cell.setCellStyle(style); @@ -282,11 +297,11 @@ public abstract class ExcelExportBase extends ExportBase { public int getImageType(byte[] value) { String type = POIPublicUtil.getFileExtendName(value); if (type.equalsIgnoreCase("JPG")) { - return HSSFWorkbook.PICTURE_TYPE_JPEG; + return Workbook.PICTURE_TYPE_JPEG; } else if (type.equalsIgnoreCase("PNG")) { - return HSSFWorkbook.PICTURE_TYPE_PNG; + return Workbook.PICTURE_TYPE_PNG; } - return HSSFWorkbook.PICTURE_TYPE_JPEG; + return Workbook.PICTURE_TYPE_JPEG; } private Map getMergeDataMap(List excelParams) { @@ -311,7 +326,7 @@ public abstract class ExcelExportBase extends ExportBase { return mergeMap; } - public CellStyle getStyles(Map styles, boolean b, boolean wrap) { + public CellStyle getStyles(Map styles, boolean b, boolean wrap) { return null; } diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/MyExcelExport.java b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/MyExcelExport.java index 63d14e4..c7e2572 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/MyExcelExport.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/MyExcelExport.java @@ -2,36 +2,39 @@ package org.jeecgframework.poi.excel; import java.util.Map; -import org.apache.poi.hssf.usermodel.HSSFCellStyle; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Workbook; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.export.ExcelExportServer; - +/** + * 自己定义导出的样式 + * @author JueYue + * @date 2014年12月2日 上午10:32:44 + */ public class MyExcelExport extends ExcelExportServer { @Override - public HSSFCellStyle getHeaderStyle(HSSFWorkbook workbook, ExportParams entity) { + public CellStyle getHeaderStyle(Workbook workbook, ExportParams entity) { return super.getHeaderStyle(workbook, entity); } @Override - public HSSFCellStyle getOneStyle(HSSFWorkbook workbook, boolean isWarp) { + public CellStyle getOneStyle(Workbook workbook, boolean isWarp) { return super.getOneStyle(workbook, isWarp); } @Override - public CellStyle getStyles(Map map, boolean needOne, boolean isWrap) { + public CellStyle getStyles(Map map, boolean needOne, boolean isWrap) { return super.getStyles(map, needOne, isWrap); } @Override - public HSSFCellStyle getTitleStyle(HSSFWorkbook workbook, ExportParams entity) { + public CellStyle getTitleStyle(Workbook workbook, ExportParams entity) { return super.getTitleStyle(workbook, entity); } @Override - public HSSFCellStyle getTwoStyle(HSSFWorkbook workbook, boolean isWarp) { + public CellStyle getTwoStyle(Workbook workbook, boolean isWarp) { return super.getTwoStyle(workbook, isWarp); } diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportForMap.java b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportForMap.java index 1a36c1c..8e4f39c 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportForMap.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportForMap.java @@ -9,14 +9,18 @@ import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Workbook; import org.jeecgframework.poi.excel.ExcelExportUtil; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; +import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; import org.junit.Test; public class ExcelExportForMap { - - @Test + /** + * Map 测试 + */ + // @Test public void test() { try { List entity = new ArrayList(); @@ -32,8 +36,8 @@ public class ExcelExportForMap { list.add(map); } - HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams("测试", "测试"), - entity, list); + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("测试", "测试"), entity, + list); FileOutputStream fos = new FileOutputStream("d:/tt.xls"); workbook.write(fos); fos.close(); @@ -44,4 +48,34 @@ public class ExcelExportForMap { } } + @Test + public void testMany() { + try { + List entity = new ArrayList(); + for (int i = 0; i < 500; i++) { + entity.add(new ExcelExportEntity("姓名" + i, "name" + i)); + } + + List> list = new ArrayList>(); + Map map; + for (int i = 0; i < 10; i++) { + map = new HashMap(); + for (int j = 0; j < 500; j++) { + map.put("name" + j, j + "_" + i); + } + list.add(map); + } + ExportParams params = new ExportParams("测试", "测试"); + params.setType(PoiBaseConstants.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(params, entity, list); + FileOutputStream fos = new FileOutputStream("d:/tt.xlsx"); + workbook.write(fos); + fos.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilDataHandlerTest.java b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilDataHandlerTest.java index 0450657..c0fad33 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilDataHandlerTest.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilDataHandlerTest.java @@ -6,6 +6,7 @@ import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Workbook; import org.jeecgframework.poi.entity.CourseEntity; import org.jeecgframework.poi.entity.StudentEntity; import org.jeecgframework.poi.entity.TeacherEntity; @@ -64,7 +65,7 @@ public class ExcelExportUtilDataHandlerTest { CourseHanlder hanlder = new CourseHanlder(); hanlder.setNeedHandlerFields(new String[] { "课程名称" }); exportParams.setDataHanlder(hanlder); - HSSFWorkbook workbook = ExcelExportUtil.exportExcel(exportParams, CourseEntity.class, list); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, CourseEntity.class, list); FileOutputStream fos = new FileOutputStream("d:/tt.xls"); workbook.write(fos); fos.close(); diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilIdTest.java b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilIdTest.java index fab3b60..1366a20 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilIdTest.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilIdTest.java @@ -6,6 +6,7 @@ import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Workbook; import org.jeecgframework.poi.entity.CourseEntity; import org.jeecgframework.poi.entity.StudentEntity; import org.jeecgframework.poi.entity.TeacherEntity; @@ -69,7 +70,7 @@ public class ExcelExportUtilIdTest { public void testExportExcel() throws Exception { ExportParams params = new ExportParams("2412312", "测试", "测试"); params.setAddIndex(true); - HSSFWorkbook workbook = ExcelExportUtil.exportExcel(params, TeacherEntity.class, telist); + Workbook workbook = ExcelExportUtil.exportExcel(params, TeacherEntity.class, telist); FileOutputStream fos = new FileOutputStream("d:/tt.xls"); workbook.write(fos); fos.close(); diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilTest.java b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilTest.java index 5eea56f..08a2cf4 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilTest.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilTest.java @@ -7,7 +7,6 @@ import java.util.Date; import java.util.HashMap; import java.util.List; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; import org.jeecgframework.poi.entity.CourseEntity; import org.jeecgframework.poi.entity.StudentEntity; @@ -38,7 +37,7 @@ public class ExcelExportUtilTest { list.add(courseEntity); } Date start = new Date(); - HSSFWorkbook workbook = ExcelExportUtil.exportExcel( + Workbook workbook = ExcelExportUtil.exportExcel( new ExportParams("2412312", "测试", "测试"), CourseEntity.class, list); System.out.println(new Date().getTime() - start.getTime()); File savefile = new File("d:/"); @@ -97,7 +96,7 @@ public class ExcelExportUtilTest { //@Test public void testExportExcel() throws Exception { Date start = new Date(); - HSSFWorkbook workbook = ExcelExportUtil.exportExcel( + Workbook workbook = ExcelExportUtil.exportExcel( new ExportParams("2412312", "测试", "测试"), CourseEntity.class, list); System.out.println(new Date().getTime() - start.getTime()); File savefile = new File("d:/"); @@ -117,7 +116,7 @@ public class ExcelExportUtilTest { //@Test public void testExportTitleExcel() throws Exception { Date start = new Date(); - HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams("2412312", "测试"), + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("2412312", "测试"), CourseEntity.class, list); System.out.println(new Date().getTime() - start.getTime()); File savefile = new File("d:/"); diff --git a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgMapExcelView.java b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgMapExcelView.java index 5013b8f..4cfa354 100644 --- a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgMapExcelView.java +++ b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgMapExcelView.java @@ -41,7 +41,8 @@ public class JeecgMapExcelView extends AbstractExcelView { new ExcelExportServer().createSheetForMap(hssfWorkbook, (ExportParams) model.get(MapExcelConstants.PARAMS), (List) model.get(MapExcelConstants.ENTITY_LIST), - (Collection>) model.get(MapExcelConstants.MAP_LIST)); + (Collection>) model.get(MapExcelConstants.MAP_LIST), + ((ExportParams) model.get(MapExcelConstants.PARAMS)).getType()); } public boolean isIE(HttpServletRequest request) { diff --git a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgSingleExcelView.java b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgSingleExcelView.java index bb241be..831ec2f 100644 --- a/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgSingleExcelView.java +++ b/easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgSingleExcelView.java @@ -9,6 +9,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.vo.MapExcelConstants; import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; import org.jeecgframework.poi.excel.export.ExcelExportServer; import org.springframework.web.servlet.view.document.AbstractExcelView; @@ -41,13 +42,15 @@ public class JeecgSingleExcelView extends AbstractExcelView { new ExcelExportServer().createSheet(hssfWorkbook, (ExportParams) map.get(NormalExcelConstants.PARAMS), (Class) map.get(NormalExcelConstants.CLASS), - (Collection) map.get(NormalExcelConstants.DATA_LIST)); + (Collection) map.get(NormalExcelConstants.DATA_LIST), + ((ExportParams) model.get(MapExcelConstants.PARAMS)).getType()); } } else { new ExcelExportServer().createSheet(hssfWorkbook, (ExportParams) model.get(NormalExcelConstants.PARAMS), (Class) model.get(NormalExcelConstants.CLASS), - (Collection) model.get(NormalExcelConstants.DATA_LIST)); + (Collection) model.get(NormalExcelConstants.DATA_LIST), + ((ExportParams) model.get(MapExcelConstants.PARAMS)).getType()); } }