|
|
@@ -15,7 +15,6 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
-import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
|
import java.io.InputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
@@ -25,14 +24,13 @@ import java.util.*;
|
|
|
public class PVExcelUtil {
|
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(PVExcelUtil.class);
|
|
|
+
|
|
|
/**
|
|
|
* 根据Map创建对应的Excel
|
|
|
- * @param entity
|
|
|
- * 表格标题属性
|
|
|
- * @param entityList
|
|
|
- * Map对象列表
|
|
|
- * @param dataSet
|
|
|
- * Excel对象数据List
|
|
|
+ *
|
|
|
+ * @param entity 表格标题属性
|
|
|
+ * @param entityList Map对象列表
|
|
|
+ * @param dataSet Excel对象数据List
|
|
|
*/
|
|
|
public static Workbook exportExcel(ExportParams entity, List<ExcelExportEntity> entityList,
|
|
|
Collection<? extends Map<?, ?>> dataSet) {
|
|
|
@@ -48,30 +46,31 @@ public class PVExcelUtil {
|
|
|
return workbook;
|
|
|
}
|
|
|
|
|
|
- public static Workbook exportExcelReport(ExportParams entity, Class<?> pojoClass,
|
|
|
- Collection<?> dataSet) {
|
|
|
+ public static Workbook exportExcelReport(List<Map<String, Object>> list, ExcelType type) {
|
|
|
Workbook workbook;
|
|
|
- if (ExcelType.HSSF.equals(entity.getType())) {
|
|
|
+ if (ExcelType.HSSF.equals(type)) {
|
|
|
workbook = new HSSFWorkbook();
|
|
|
- } else if (dataSet.size() < 10000) {
|
|
|
- workbook = new XSSFWorkbook();
|
|
|
} else {
|
|
|
- workbook = new SXSSFWorkbook();
|
|
|
+ workbook = new XSSFWorkbook();
|
|
|
+ }
|
|
|
+ for (Map<String, Object> map : list) {
|
|
|
+ ExcelExportServer server = new PVExcelExportReportServer();
|
|
|
+ server.createSheetForMap(workbook, (ExportParams) map.get("params"),
|
|
|
+ (List<ExcelExportEntity>) map.get("entity"), (Collection<?>) map.get("data"));
|
|
|
}
|
|
|
- new PVExcelExportReportServer().createSheet(workbook, entity, pojoClass, dataSet);
|
|
|
return workbook;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 一个excel 创建多个sheet
|
|
|
*
|
|
|
- * @param list
|
|
|
- * 多个Map key title 对应表格Title key entity 对应表格对应实体 key data
|
|
|
- * Collection 数据
|
|
|
+ * @param list 多个Map key title 对应表格Title key entity 对应表格对应实体 key data
|
|
|
+ * Collection 数据
|
|
|
* @return
|
|
|
*/
|
|
|
- public static Workbook exportExcelWithMultiSheet(List<ExportParams> entities, List<ExcelExportEntity> entityList,
|
|
|
- Collection<? extends Map<?, ?>> dataSet) {
|
|
|
+ public static Workbook exportExcelTemplateWithMultiSheet(
|
|
|
+ List<ExportParams> entities, List<ExcelExportEntity> entityList,
|
|
|
+ Collection<? extends Map<?, ?>> dataSet) {
|
|
|
Workbook workbook;
|
|
|
if (ExcelType.HSSF.equals(entities.get(0).getType())) {
|
|
|
workbook = new HSSFWorkbook();
|
|
|
@@ -80,8 +79,9 @@ public class PVExcelUtil {
|
|
|
} else {
|
|
|
workbook = new SXSSFWorkbook();
|
|
|
}
|
|
|
- for (ExportParams entity:entities) {
|
|
|
- new PVExcelExportTemplateServer().createSheetForMap(workbook, entity, entityList, new ArrayList<>(dataSet));
|
|
|
+ for (ExportParams entity : entities) {
|
|
|
+ new PVExcelExportTemplateServer().createSheetForMap(
|
|
|
+ workbook, entity, entityList, new ArrayList<>(dataSet));
|
|
|
}
|
|
|
|
|
|
return workbook;
|
|
|
@@ -111,15 +111,16 @@ public class PVExcelUtil {
|
|
|
IOUtils.closeQuietly(in);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
public static String getCellValueByCell(Sheet sheet, int row, int column) {
|
|
|
Row rowData = sheet.getRow(row);
|
|
|
Cell cell = rowData.getCell(column);
|
|
|
//判断是否为null或空串
|
|
|
- if (cell==null || cell.toString().trim().equals("")) {
|
|
|
+ if (cell == null || cell.toString().trim().equals("")) {
|
|
|
return "";
|
|
|
}
|
|
|
String cellValue = "";
|
|
|
- int cellType=cell.getCellType();
|
|
|
+ int cellType = cell.getCellType();
|
|
|
switch (cellType) {
|
|
|
case Cell.CELL_TYPE_NUMERIC: // 数字
|
|
|
short format = cell.getCellStyle().getDataFormat();
|
|
|
@@ -135,7 +136,7 @@ public class PVExcelUtil {
|
|
|
Date date = org.apache.poi.ss.usermodel.DateUtil
|
|
|
.getJavaDate(value);
|
|
|
cellValue = sdf.format(date);
|
|
|
- }else {// 日期
|
|
|
+ } else {// 日期
|
|
|
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
}
|
|
|
try {
|
|
|
@@ -146,10 +147,10 @@ public class PVExcelUtil {
|
|
|
} catch (Exception e1) {
|
|
|
e1.printStackTrace();
|
|
|
}
|
|
|
- }finally{
|
|
|
+ } finally {
|
|
|
sdf = null;
|
|
|
}
|
|
|
- } else {
|
|
|
+ } else {
|
|
|
BigDecimal bd = new BigDecimal(cell.getNumericCellValue());
|
|
|
cellValue = bd.toPlainString();// 数值 这种用BigDecimal包装再获取plainString,可以防止获取到科学计数值
|
|
|
}
|
|
|
@@ -158,7 +159,8 @@ public class PVExcelUtil {
|
|
|
cellValue = cell.getStringCellValue();
|
|
|
break;
|
|
|
case Cell.CELL_TYPE_BOOLEAN: // Boolean
|
|
|
- cellValue = cell.getBooleanCellValue()+"";;
|
|
|
+ cellValue = cell.getBooleanCellValue() + "";
|
|
|
+ ;
|
|
|
break;
|
|
|
case Cell.CELL_TYPE_FORMULA: // 公式
|
|
|
cellValue = cell.getCellFormula();
|