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 e121a09..61d91ac 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,6 +6,7 @@ import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.TemplateExportParams; @@ -36,8 +37,10 @@ public final class ExcelExportUtil { Workbook workbook; if (entity.getType().equals(PoiBaseConstants.HSSF)) { workbook = new HSSFWorkbook(); - } else { + } else if (dataSet.size() < 1000) { workbook = new XSSFWorkbook(); + } else { + workbook = new SXSSFWorkbook(); } new ExcelExportServer().createSheet(workbook, entity, pojoClass, dataSet, entity.getType()); return workbook; @@ -57,8 +60,10 @@ public final class ExcelExportUtil { Workbook workbook; if (entity.getType().equals(PoiBaseConstants.HSSF)) { workbook = new HSSFWorkbook(); - } else { + } else if (dataSet.size() < 1000) { workbook = new XSSFWorkbook(); + } else { + workbook = new SXSSFWorkbook(); } new ExcelExportServer().createSheetForMap(workbook, entity, entityList, dataSet, entity.getType()); diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java index 4ab9114..8e41267 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java @@ -59,7 +59,6 @@ public class CellValueServer { } else if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) { result = cell.getBooleanCellValue(); } else { - cell.setCellType(Cell.CELL_TYPE_STRING); result = cell.getStringCellValue(); } return result; @@ -136,9 +135,11 @@ public class CellValueServer { if (xclass.equals("class java.math.BigDecimal")) { return new BigDecimal(String.valueOf(result)); } - return String.valueOf(result); - } catch (NumberFormatException e) { - e.printStackTrace(); + if (xclass.equals("class java.lang.String")) { + return String.valueOf(result); + } + return result; + } catch (Exception e) { throw new ExcelImportException(ExcelImportEnum.GET_VALUE_ERROR); } } diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportMsgClient.java b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportMsgClient.java new file mode 100644 index 0000000..1054563 --- /dev/null +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/test/ExcelExportMsgClient.java @@ -0,0 +1,58 @@ +package org.jeecgframework.poi.excel.test; + +import static org.junit.Assert.*; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.apache.poi.ss.usermodel.Workbook; +import org.jeecgframework.poi.entity.CourseEntity; +import org.jeecgframework.poi.entity.MsgClient; +import org.jeecgframework.poi.entity.MsgClientGroup; +import org.jeecgframework.poi.excel.ExcelExportUtil; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; +import org.junit.Test; +/** + * 当行大数据量测试 + * @author JueYue + * @date 2014年12月13日 下午3:42:57 + */ +public class ExcelExportMsgClient { + + @Test + public void test() throws Exception { + + List list = new ArrayList(); + for (int i = 0; i < 50000; i++) { + MsgClient client = new MsgClient(); + client.setBirthday(new Date()); + client.setClientName("小明" + i); + client.setClientPhone("18797" + i); + client.setCreateBy("jueyue"); + client.setId("1" + i); + client.setRemark("测试" + i); + MsgClientGroup group = new MsgClientGroup(); + group.setGroupName("测试" + i); + client.setGroup(group); + list.add(client); + } + Date start = new Date(); + ExportParams params = new ExportParams("2412312", "测试"); + params.setType(PoiBaseConstants.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(params, MsgClient.class, list); + System.out.println(new Date().getTime() - start.getTime()); + File savefile = new File("d:/"); + if (!savefile.exists()) { + savefile.mkdirs(); + } + FileOutputStream fos = new FileOutputStream("d:/tt.xlsx"); + workbook.write(fos); + fos.close(); + } + +}