Explorar el Código

新增了导出 版本的选择,03和07

4.1.3.A
jueyue hace 10 años
padre
commit
faa63e9bd7
Se han modificado 12 ficheros con 213 adiciones y 97 borrados
  1. +30
    -11
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java
  2. +15
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ExportParams.java
  3. +20
    -4
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/vo/PoiBaseConstants.java
  4. +51
    -42
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java
  5. +34
    -19
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java
  6. +11
    -8
      easypoi-test/src/main/java/org/jeecgframework/poi/excel/MyExcelExport.java
  7. +38
    -4
      easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportForMap.java
  8. +2
    -1
      easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilDataHandlerTest.java
  9. +2
    -1
      easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilIdTest.java
  10. +3
    -4
      easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilTest.java
  11. +2
    -1
      easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgMapExcelView.java
  12. +5
    -2
      easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgSingleExcelView.java

+ 30
- 11
easypoi-base/src/main/java/org/jeecgframework/poi/excel/ExcelExportUtil.java Ver fichero

@@ -6,9 +6,11 @@ import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook; 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.ExportParams;
import org.jeecgframework.poi.excel.entity.TemplateExportParams; import org.jeecgframework.poi.excel.entity.TemplateExportParams;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; 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.ExcelExportServer;
import org.jeecgframework.poi.excel.export.template.ExcelExportOfTemplateUtil; import org.jeecgframework.poi.excel.export.template.ExcelExportOfTemplateUtil;
@@ -29,14 +31,20 @@ public final class ExcelExportUtil {
* @param dataSet * @param dataSet
* Excel对象数据List * 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; return workbook;
} }
/** /**
* 根据Map创建对应的Excel
* @param entity * @param entity
* 表格标题属性 * 表格标题属性
* @param pojoClass * @param pojoClass
@@ -44,10 +52,16 @@ public final class ExcelExportUtil {
* @param dataSet * @param dataSet
* Excel对象数据List * Excel对象数据List
*/ */
public static HSSFWorkbook exportExcel(ExportParams entity, List<ExcelExportEntity> entityList,
Collection<? extends Map<?, ?>> dataSet) {
HSSFWorkbook workbook = new HSSFWorkbook();
new ExcelExportServer().createSheetForMap(workbook, entity, entityList, dataSet);
public static Workbook exportExcel(ExportParams entity, List<ExcelExportEntity> entityList,
Collection<? extends Map<?, ?>> 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; return workbook;
} }
@@ -59,12 +73,17 @@ public final class ExcelExportUtil {
* Collection 数据 * Collection 数据
* @return * @return
*/ */
public static HSSFWorkbook exportExcel(List<Map<String, Object>> list) {
HSSFWorkbook workbook = new HSSFWorkbook();
public static Workbook exportExcel(List<Map<String, Object>> list, String type) {
Workbook workbook;
if (type.equals(PoiBaseConstants.HSSF)) {
workbook = new HSSFWorkbook();
} else {
workbook = new XSSFWorkbook();
}
ExcelExportServer server = new ExcelExportServer(); ExcelExportServer server = new ExcelExportServer();
for (Map<String, Object> map : list) { for (Map<String, Object> map : list) {
server.createSheet(workbook, (ExportParams) map.get("title"), 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; return workbook;
} }


+ 15
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/ExportParams.java Ver fichero

@@ -1,6 +1,7 @@
package org.jeecgframework.poi.excel.entity; package org.jeecgframework.poi.excel.entity;
import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.hssf.util.HSSFColor;
import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants;
/** /**
* Excel 导出参数 * Excel 导出参数
@@ -49,9 +50,15 @@ public class ExportParams extends ExcelBaseParams {
* 属性说明行的颜色 例如:HSSFColor.SKY_BLUE.index 默认 * 属性说明行的颜色 例如:HSSFColor.SKY_BLUE.index 默认
*/ */
private short headerColor = HSSFColor.SKY_BLUE.index; private short headerColor = HSSFColor.SKY_BLUE.index;
/**
* Excel 导出版本
*/
private String type = PoiBaseConstants.HSSF;
public ExportParams() { public ExportParams() {
} }
public ExportParams(String title, String sheetName) { public ExportParams(String title, String sheetName) {
this.title = title; this.title = title;
this.sheetName = sheetName; this.sheetName = sheetName;
@@ -134,4 +141,12 @@ public class ExportParams extends ExcelBaseParams {
public void setTitleHeight(short titleHeight) { public void setTitleHeight(short titleHeight) {
this.titleHeight = titleHeight; this.titleHeight = titleHeight;
} }
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
} }

+ 20
- 4
easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/vo/PoiBaseConstants.java Ver fichero

@@ -5,13 +5,29 @@ package org.jeecgframework.poi.excel.entity.vo;
* Created by jue on 14-4-21. * Created by jue on 14-4-21.
*/ */
public interface PoiBaseConstants { public interface PoiBaseConstants {
/**
* 字段属性对应方法
*/
public static String GET = "get"; public static String GET = "get";
/**
* 字段属性对应方法
*/
public static String SET = "set"; public static String SET = "set";
/**
* 字段属性对应方法
*/
public static String IS = "is"; public static String IS = "is";
/**
* 是否增加属性列
*/
public static String IS_ADD_INDEX = "isAddIndex"; public static String IS_ADD_INDEX = "isAddIndex";
/**
* 03版本Excel
*/
public static String HSSF = "HSSF";
/**
* 07版本Excel
*/
public static String XSSF = "XSSF";
} }

+ 51
- 42
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/ExcelExportServer.java Ver fichero

@@ -9,15 +9,13 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; 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.CellStyle;
import org.apache.poi.ss.usermodel.Drawing; import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet; 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.ss.util.CellRangeAddress;
import org.jeecgframework.poi.excel.annotation.ExcelTarget; import org.jeecgframework.poi.excel.annotation.ExcelTarget;
import org.jeecgframework.poi.excel.entity.ExportParams; 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 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 // 最大行数,超过自动多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<ExcelExportEntity> excelParams) { List<ExcelExportEntity> excelParams) {
int rows = 0, feildWidth = getFieldWidth(excelParams); int rows = 0, feildWidth = getFieldWidth(excelParams);
if (entity.getTitle() != null) { if (entity.getTitle() != null) {
@@ -64,8 +62,7 @@ public class ExcelExportServer extends ExcelExportBase {
* @param workbook * @param workbook
* @param feildWidth * @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 row = sheet.createRow(0);
row.setHeight(entity.getTitleHeight()); row.setHeight(entity.getTitleHeight());
createStringCell(row, 0, entity.getTitle(), getHeaderStyle(workbook, entity), null); createStringCell(row, 0, entity.getTitle(), getHeaderStyle(workbook, entity), null);
@@ -73,8 +70,8 @@ public class ExcelExportServer extends ExcelExportBase {
if (entity.getSecondTitle() != null) { if (entity.getSecondTitle() != null) {
row = sheet.createRow(1); row = sheet.createRow(1);
row.setHeight(entity.getSecondTitleHeight()); 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); createStringCell(row, 0, entity.getSecondTitle(), style, null);
sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, feildWidth)); sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, feildWidth));
return 2; return 2;
@@ -82,14 +79,19 @@ public class ExcelExportServer extends ExcelExportBase {
return 1; 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()) { if (logger.isDebugEnabled()) {
logger.debug("Excel export start ,class is {}", pojoClass); 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) { if (workbook == null || entity == null || pojoClass == null || dataSet == null) {
throw new ExcelExportException(ExcelExportEnum.PARAMETER_ERROR); throw new ExcelExportException(ExcelExportEnum.PARAMETER_ERROR);
} }
if (type.equals(PoiBaseConstants.XSSF)) {
MAX_NUM = 1000000;
}
super.type = type;
Sheet sheet = null; Sheet sheet = null;
try { try {
sheet = workbook.createSheet(entity.getSheetName()); sheet = workbook.createSheet(entity.getSheetName());
@@ -103,7 +105,7 @@ public class ExcelExportServer extends ExcelExportBase {
needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields()); needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields());
} }
// 创建表格属性 // 创建表格属性
Map<String, HSSFCellStyle> styles = createStyles(workbook);
Map<String, CellStyle> styles = createStyles(workbook);
Drawing patriarch = sheet.createDrawingPatriarch(); Drawing patriarch = sheet.createDrawingPatriarch();
List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>(); List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>();
if (entity.isAddIndex()) { if (entity.isAddIndex()) {
@@ -139,7 +141,7 @@ public class ExcelExportServer extends ExcelExportBase {
} }
// 发现还有剩余list 继续循环创建Sheet // 发现还有剩余list 继续循环创建Sheet
if (dataSet.size() > 0) { if (dataSet.size() > 0) {
createSheet(workbook, entity, pojoClass, dataSet);
createSheet(workbook, entity, pojoClass, dataSet, type);
} }
} catch (Exception e) { } 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<ExcelExportEntity> entityList, List<ExcelExportEntity> entityList,
Collection<? extends Map<?, ?>> dataSet) {
Collection<? extends Map<?, ?>> 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) { if (workbook == null || entity == null || entityList == null || dataSet == null) {
throw new ExcelExportException(ExcelExportEnum.PARAMETER_ERROR); throw new ExcelExportException(ExcelExportEnum.PARAMETER_ERROR);
} }
if (type.equals(PoiBaseConstants.XSSF)) {
MAX_NUM = 1000000;
}
super.type = type;
Sheet sheet = null; Sheet sheet = null;
try { try {
sheet = workbook.createSheet(entity.getSheetName()); sheet = workbook.createSheet(entity.getSheetName());
@@ -167,7 +176,7 @@ public class ExcelExportServer extends ExcelExportBase {
needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields()); needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields());
} }
// 创建表格属性 // 创建表格属性
Map<String, HSSFCellStyle> styles = createStyles(workbook);
Map<String, CellStyle> styles = createStyles(workbook);
Drawing patriarch = sheet.createDrawingPatriarch(); Drawing patriarch = sheet.createDrawingPatriarch();
List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>(); List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>();
if (entity.isAddIndex()) { if (entity.isAddIndex()) {
@@ -199,7 +208,7 @@ public class ExcelExportServer extends ExcelExportBase {
} }
// 发现还有剩余list 继续循环创建Sheet // 发现还有剩余list 继续循环创建Sheet
if (dataSet.size() > 0) { if (dataSet.size() > 0) {
createSheetForMap(workbook, entity, entityList, dataSet);
createSheetForMap(workbook, entity, entityList, dataSet, type);
} }
} catch (Exception e) { } catch (Exception e) {
@@ -209,8 +218,8 @@ public class ExcelExportServer extends ExcelExportBase {
} }
} }
private Map<String, HSSFCellStyle> createStyles(HSSFWorkbook workbook) {
Map<String, HSSFCellStyle> map = new HashMap<String, HSSFCellStyle>();
private Map<String, CellStyle> createStyles(Workbook workbook) {
Map<String, CellStyle> map = new HashMap<String, CellStyle>();
map.put("one", getOneStyle(workbook, false)); map.put("one", getOneStyle(workbook, false));
map.put("oneWrap", getOneStyle(workbook, true)); map.put("oneWrap", getOneStyle(workbook, true));
map.put("two", getTwoStyle(workbook, false)); map.put("two", getTwoStyle(workbook, false));
@@ -224,7 +233,7 @@ public class ExcelExportServer extends ExcelExportBase {
* @param title * @param title
* @param index * @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<ExcelExportEntity> excelParams) { List<ExcelExportEntity> excelParams) {
Row row = sheet.createRow(index); Row row = sheet.createRow(index);
int rows = getRowNums(excelParams); int rows = getRowNums(excelParams);
@@ -264,25 +273,25 @@ public class ExcelExportServer extends ExcelExportBase {
* @param workbook * @param workbook
* @return * @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 font = workbook.createFont();
font.setFontHeightInPoints((short) 24); font.setFontHeightInPoints((short) 24);
titleStyle.setFont(font); titleStyle.setFont(font);
titleStyle.setFillForegroundColor(entity.getColor()); 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; 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.setBorderLeft((short) 1); // 左边框
style.setBorderRight((short) 1); // 右边框 style.setBorderRight((short) 1); // 右边框
style.setBorderBottom((short) 1); style.setBorderBottom((short) 1);
style.setBorderTop((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); style.setDataFormat(cellFormat);
if (isWarp) { if (isWarp) {
style.setWrapText(true); style.setWrapText(true);
@@ -305,7 +314,7 @@ public class ExcelExportServer extends ExcelExportBase {
return 1; return 1;
} }
public CellStyle getStyles(Map<String, HSSFCellStyle> map, boolean needOne, boolean isWrap) {
public CellStyle getStyles(Map<String, CellStyle> map, boolean needOne, boolean isWrap) {
if (needOne && isWrap) { if (needOne && isWrap) {
return map.get("oneWrap"); return map.get("oneWrap");
} }
@@ -324,26 +333,26 @@ public class ExcelExportServer extends ExcelExportBase {
* @param workbook * @param workbook
* @return * @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.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); titleStyle.setWrapText(true);
return titleStyle; 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.setBorderLeft((short) 1); // 左边框
style.setBorderRight((short) 1); // 右边框 style.setBorderRight((short) 1); // 右边框
style.setBorderBottom((short) 1); style.setBorderBottom((short) 1);
style.setBorderTop((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); style.setDataFormat(cellFormat);
if (isWarp) { if (isWarp) {
style.setWrapText(true); style.setWrapText(true);


+ 34
- 19
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java Ver fichero

@@ -14,18 +14,19 @@ import java.util.Set;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import org.apache.commons.lang.StringUtils; 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.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFRichTextString; 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.Cell;
import org.apache.poi.ss.usermodel.CellStyle; 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.Drawing;
import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress; 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.ExcelExportEntity;
import org.jeecgframework.poi.excel.entity.params.MergeEntity; import org.jeecgframework.poi.excel.entity.params.MergeEntity;
import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants;
@@ -39,7 +40,9 @@ import org.jeecgframework.poi.util.POIPublicUtil;
*/ */
public abstract class ExcelExportBase extends ExportBase { 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, private boolean checkIsEqualByCellContents(MergeEntity mergeEntity, String text, Cell cell,
int[] delys, int rowNum) { int[] delys, int rowNum) {
@@ -69,7 +72,7 @@ public abstract class ExcelExportBase extends ExportBase {
*/ */
public int createCells(Drawing patriarch, int index, Object t, public int createCells(Drawing patriarch, int index, Object t,
List<ExcelExportEntity> excelParams, Sheet sheet, Workbook workbook, List<ExcelExportEntity> excelParams, Sheet sheet, Workbook workbook,
Map<String, HSSFCellStyle> styles, short rowHeight) throws Exception {
Map<String, CellStyle> styles, short rowHeight) throws Exception {
ExcelExportEntity entity; ExcelExportEntity entity;
Row row = sheet.createRow(index); Row row = sheet.createRow(index);
row.setHeight(rowHeight); row.setHeight(rowHeight);
@@ -128,29 +131,37 @@ public abstract class ExcelExportBase extends ExportBase {
* @param entity * @param entity
* @param row * @param row
* @param i * @param i
* @param string
* @param imagePath
* @param obj * @param obj
* @throws Exception * @throws Exception
*/ */
public void createImageCell(Drawing patriarch, ExcelExportEntity entity, Row row, int i, 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.setHeight((short) (50 * entity.getHeight()));
row.createCell(i); 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; return;
} }
if (entity.getExportImageType() == 1) { if (entity.getExportImageType() == 1) {
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferImg; BufferedImage bufferImg;
try { try {
String path = POIPublicUtil.getWebRootPath(string);
String path = POIPublicUtil.getWebRootPath(imagePath);
path = path.replace("WEB-INF/classes/", ""); path = path.replace("WEB-INF/classes/", "");
path = path.replace("file:/", ""); path = path.replace("file:/", "");
bufferImg = ImageIO.read(new File(path)); bufferImg = ImageIO.read(new File(path));
ImageIO.write(bufferImg, ImageIO.write(bufferImg,
string.substring(string.indexOf(".") + 1, string.length()), byteArrayOut);
imagePath.substring(imagePath.indexOf(".") + 1, imagePath.length()),
byteArrayOut);
byte[] value = byteArrayOut.toByteArray(); byte[] value = byteArrayOut.toByteArray();
patriarch.createPicture(anchor, patriarch.createPicture(anchor,
row.getSheet().getWorkbook().addPicture(value, getImageType(value))); row.getSheet().getWorkbook().addPicture(value, getImageType(value)));
@@ -168,7 +179,7 @@ public abstract class ExcelExportBase extends ExportBase {
} }
private int createIndexCell(Row row, Map<String, HSSFCellStyle> styles, int index,
private int createIndexCell(Row row, Map<String, CellStyle> styles, int index,
ExcelExportEntity excelExportEntity) { ExcelExportEntity excelExportEntity) {
if (excelExportEntity.getName().equals("序号") if (excelExportEntity.getName().equals("序号")
&& excelExportEntity.getFormat().equals(PoiBaseConstants.IS_ADD_INDEX)) { && 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, public void createListCells(Drawing patriarch, int index, int cellNum, Object obj,
List<ExcelExportEntity> excelParams, Sheet sheet, List<ExcelExportEntity> excelParams, Sheet sheet,
Workbook workbook, Map<String, HSSFCellStyle> styles)
throws Exception {
Workbook workbook, Map<String, CellStyle> styles) throws Exception {
ExcelExportEntity entity; ExcelExportEntity entity;
Row row; Row row;
if (sheet.getRow(index) == null) { 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, public void createStringCell(Row row, int index, String text, CellStyle style,
ExcelExportEntity entity) { ExcelExportEntity entity) {
Cell cell = row.createCell(index); 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); cell.setCellValue(Rtext);
if (style != null) { if (style != null) {
cell.setCellStyle(style); cell.setCellStyle(style);
@@ -282,11 +297,11 @@ public abstract class ExcelExportBase extends ExportBase {
public int getImageType(byte[] value) { public int getImageType(byte[] value) {
String type = POIPublicUtil.getFileExtendName(value); String type = POIPublicUtil.getFileExtendName(value);
if (type.equalsIgnoreCase("JPG")) { if (type.equalsIgnoreCase("JPG")) {
return HSSFWorkbook.PICTURE_TYPE_JPEG;
return Workbook.PICTURE_TYPE_JPEG;
} else if (type.equalsIgnoreCase("PNG")) { } 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<Integer, int[]> getMergeDataMap(List<ExcelExportEntity> excelParams) { private Map<Integer, int[]> getMergeDataMap(List<ExcelExportEntity> excelParams) {
@@ -311,7 +326,7 @@ public abstract class ExcelExportBase extends ExportBase {
return mergeMap; return mergeMap;
} }
public CellStyle getStyles(Map<String, HSSFCellStyle> styles, boolean b, boolean wrap) {
public CellStyle getStyles(Map<String, CellStyle> styles, boolean b, boolean wrap) {
return null; return null;
} }


+ 11
- 8
easypoi-test/src/main/java/org/jeecgframework/poi/excel/MyExcelExport.java Ver fichero

@@ -2,36 +2,39 @@ package org.jeecgframework.poi.excel;
import java.util.Map; 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.CellStyle;
import org.apache.poi.ss.usermodel.Workbook;
import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.export.ExcelExportServer; import org.jeecgframework.poi.excel.export.ExcelExportServer;
/**
* 自己定义导出的样式
* @author JueYue
* @date 2014年12月2日 上午10:32:44
*/
public class MyExcelExport extends ExcelExportServer { public class MyExcelExport extends ExcelExportServer {
@Override @Override
public HSSFCellStyle getHeaderStyle(HSSFWorkbook workbook, ExportParams entity) {
public CellStyle getHeaderStyle(Workbook workbook, ExportParams entity) {
return super.getHeaderStyle(workbook, entity); return super.getHeaderStyle(workbook, entity);
} }
@Override @Override
public HSSFCellStyle getOneStyle(HSSFWorkbook workbook, boolean isWarp) {
public CellStyle getOneStyle(Workbook workbook, boolean isWarp) {
return super.getOneStyle(workbook, isWarp); return super.getOneStyle(workbook, isWarp);
} }
@Override @Override
public CellStyle getStyles(Map<String, HSSFCellStyle> map, boolean needOne, boolean isWrap) {
public CellStyle getStyles(Map<String, CellStyle> map, boolean needOne, boolean isWrap) {
return super.getStyles(map, needOne, isWrap); return super.getStyles(map, needOne, isWrap);
} }
@Override @Override
public HSSFCellStyle getTitleStyle(HSSFWorkbook workbook, ExportParams entity) {
public CellStyle getTitleStyle(Workbook workbook, ExportParams entity) {
return super.getTitleStyle(workbook, entity); return super.getTitleStyle(workbook, entity);
} }
@Override @Override
public HSSFCellStyle getTwoStyle(HSSFWorkbook workbook, boolean isWarp) {
public CellStyle getTwoStyle(Workbook workbook, boolean isWarp) {
return super.getTwoStyle(workbook, isWarp); return super.getTwoStyle(workbook, isWarp);
} }


+ 38
- 4
easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportForMap.java Ver fichero

@@ -9,14 +9,18 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.ExcelExportUtil;
import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants;
import org.junit.Test; import org.junit.Test;
public class ExcelExportForMap { public class ExcelExportForMap {
@Test
/**
* Map 测试
*/
// @Test
public void test() { public void test() {
try { try {
List<ExcelExportEntity> entity = new ArrayList<ExcelExportEntity>(); List<ExcelExportEntity> entity = new ArrayList<ExcelExportEntity>();
@@ -32,8 +36,8 @@ public class ExcelExportForMap {
list.add(map); 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"); FileOutputStream fos = new FileOutputStream("d:/tt.xls");
workbook.write(fos); workbook.write(fos);
fos.close(); fos.close();
@@ -44,4 +48,34 @@ public class ExcelExportForMap {
} }
} }
@Test
public void testMany() {
try {
List<ExcelExportEntity> entity = new ArrayList<ExcelExportEntity>();
for (int i = 0; i < 500; i++) {
entity.add(new ExcelExportEntity("姓名" + i, "name" + i));
}
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map;
for (int i = 0; i < 10; i++) {
map = new HashMap<String, String>();
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();
}
}
} }

+ 2
- 1
easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilDataHandlerTest.java Ver fichero

@@ -6,6 +6,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.CourseEntity;
import org.jeecgframework.poi.entity.StudentEntity; import org.jeecgframework.poi.entity.StudentEntity;
import org.jeecgframework.poi.entity.TeacherEntity; import org.jeecgframework.poi.entity.TeacherEntity;
@@ -64,7 +65,7 @@ public class ExcelExportUtilDataHandlerTest {
CourseHanlder hanlder = new CourseHanlder(); CourseHanlder hanlder = new CourseHanlder();
hanlder.setNeedHandlerFields(new String[] { "课程名称" }); hanlder.setNeedHandlerFields(new String[] { "课程名称" });
exportParams.setDataHanlder(hanlder); 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"); FileOutputStream fos = new FileOutputStream("d:/tt.xls");
workbook.write(fos); workbook.write(fos);
fos.close(); fos.close();


+ 2
- 1
easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilIdTest.java Ver fichero

@@ -6,6 +6,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.CourseEntity;
import org.jeecgframework.poi.entity.StudentEntity; import org.jeecgframework.poi.entity.StudentEntity;
import org.jeecgframework.poi.entity.TeacherEntity; import org.jeecgframework.poi.entity.TeacherEntity;
@@ -69,7 +70,7 @@ public class ExcelExportUtilIdTest {
public void testExportExcel() throws Exception { public void testExportExcel() throws Exception {
ExportParams params = new ExportParams("2412312", "测试", "测试"); ExportParams params = new ExportParams("2412312", "测试", "测试");
params.setAddIndex(true); 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"); FileOutputStream fos = new FileOutputStream("d:/tt.xls");
workbook.write(fos); workbook.write(fos);
fos.close(); fos.close();


+ 3
- 4
easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportUtilTest.java Ver fichero

@@ -7,7 +7,6 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.jeecgframework.poi.entity.CourseEntity; import org.jeecgframework.poi.entity.CourseEntity;
import org.jeecgframework.poi.entity.StudentEntity; import org.jeecgframework.poi.entity.StudentEntity;
@@ -38,7 +37,7 @@ public class ExcelExportUtilTest {
list.add(courseEntity); list.add(courseEntity);
} }
Date start = new Date(); Date start = new Date();
HSSFWorkbook workbook = ExcelExportUtil.exportExcel(
Workbook workbook = ExcelExportUtil.exportExcel(
new ExportParams("2412312", "测试", "测试"), CourseEntity.class, list); new ExportParams("2412312", "测试", "测试"), CourseEntity.class, list);
System.out.println(new Date().getTime() - start.getTime()); System.out.println(new Date().getTime() - start.getTime());
File savefile = new File("d:/"); File savefile = new File("d:/");
@@ -97,7 +96,7 @@ public class ExcelExportUtilTest {
//@Test //@Test
public void testExportExcel() throws Exception { public void testExportExcel() throws Exception {
Date start = new Date(); Date start = new Date();
HSSFWorkbook workbook = ExcelExportUtil.exportExcel(
Workbook workbook = ExcelExportUtil.exportExcel(
new ExportParams("2412312", "测试", "测试"), CourseEntity.class, list); new ExportParams("2412312", "测试", "测试"), CourseEntity.class, list);
System.out.println(new Date().getTime() - start.getTime()); System.out.println(new Date().getTime() - start.getTime());
File savefile = new File("d:/"); File savefile = new File("d:/");
@@ -117,7 +116,7 @@ public class ExcelExportUtilTest {
//@Test //@Test
public void testExportTitleExcel() throws Exception { public void testExportTitleExcel() throws Exception {
Date start = new Date(); Date start = new Date();
HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams("2412312", "测试"),
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("2412312", "测试"),
CourseEntity.class, list); CourseEntity.class, list);
System.out.println(new Date().getTime() - start.getTime()); System.out.println(new Date().getTime() - start.getTime());
File savefile = new File("d:/"); File savefile = new File("d:/");


+ 2
- 1
easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgMapExcelView.java Ver fichero

@@ -41,7 +41,8 @@ public class JeecgMapExcelView extends AbstractExcelView {
new ExcelExportServer().createSheetForMap(hssfWorkbook, new ExcelExportServer().createSheetForMap(hssfWorkbook,
(ExportParams) model.get(MapExcelConstants.PARAMS), (ExportParams) model.get(MapExcelConstants.PARAMS),
(List<ExcelExportEntity>) model.get(MapExcelConstants.ENTITY_LIST), (List<ExcelExportEntity>) model.get(MapExcelConstants.ENTITY_LIST),
(Collection<? extends Map<?, ?>>) model.get(MapExcelConstants.MAP_LIST));
(Collection<? extends Map<?, ?>>) model.get(MapExcelConstants.MAP_LIST),
((ExportParams) model.get(MapExcelConstants.PARAMS)).getType());
} }
public boolean isIE(HttpServletRequest request) { public boolean isIE(HttpServletRequest request) {


+ 5
- 2
easypoi-web/src/main/java/org/jeecgframework/poi/excel/view/JeecgSingleExcelView.java Ver fichero

@@ -9,6 +9,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.jeecgframework.poi.excel.entity.ExportParams; 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.entity.vo.NormalExcelConstants;
import org.jeecgframework.poi.excel.export.ExcelExportServer; import org.jeecgframework.poi.excel.export.ExcelExportServer;
import org.springframework.web.servlet.view.document.AbstractExcelView; import org.springframework.web.servlet.view.document.AbstractExcelView;
@@ -41,13 +42,15 @@ public class JeecgSingleExcelView extends AbstractExcelView {
new ExcelExportServer().createSheet(hssfWorkbook, new ExcelExportServer().createSheet(hssfWorkbook,
(ExportParams) map.get(NormalExcelConstants.PARAMS), (ExportParams) map.get(NormalExcelConstants.PARAMS),
(Class<?>) map.get(NormalExcelConstants.CLASS), (Class<?>) map.get(NormalExcelConstants.CLASS),
(Collection<?>) map.get(NormalExcelConstants.DATA_LIST));
(Collection<?>) map.get(NormalExcelConstants.DATA_LIST),
((ExportParams) model.get(MapExcelConstants.PARAMS)).getType());
} }
} else { } else {
new ExcelExportServer().createSheet(hssfWorkbook, new ExcelExportServer().createSheet(hssfWorkbook,
(ExportParams) model.get(NormalExcelConstants.PARAMS), (ExportParams) model.get(NormalExcelConstants.PARAMS),
(Class<?>) model.get(NormalExcelConstants.CLASS), (Class<?>) model.get(NormalExcelConstants.CLASS),
(Collection<?>) model.get(NormalExcelConstants.DATA_LIST));
(Collection<?>) model.get(NormalExcelConstants.DATA_LIST),
((ExportParams) model.get(MapExcelConstants.PARAMS)).getType());
} }
} }


Cargando…
Cancelar
Guardar