6 changed files with 398 additions and 23 deletions
@ -0,0 +1,276 @@ |
|||
package com.epmet.commons.tools.utils; |
|||
|
|||
import cn.afterturn.easypoi.excel.ExcelExportUtil; |
|||
import cn.afterturn.easypoi.excel.ExcelImportUtil; |
|||
import cn.afterturn.easypoi.excel.entity.ExportParams; |
|||
import cn.afterturn.easypoi.excel.entity.ImportParams; |
|||
import cn.afterturn.easypoi.excel.entity.TemplateExportParams; |
|||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; |
|||
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.apache.poi.ss.usermodel.Workbook; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import javax.servlet.http.HttpServletResponse; |
|||
import java.io.File; |
|||
import java.io.IOException; |
|||
import java.io.InputStream; |
|||
import java.net.URLEncoder; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.NoSuchElementException; |
|||
|
|||
public class ExcelPoiUtils { |
|||
/** |
|||
* excel 导出 |
|||
* |
|||
* @param list 数据列表 |
|||
* @param fileName 导出时的excel名称 |
|||
* @param response |
|||
*/ |
|||
public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) throws IOException { |
|||
defaultExport(list, fileName, response); |
|||
} |
|||
|
|||
/** |
|||
* 默认的 excel 导出 |
|||
* |
|||
* @param list 数据列表 |
|||
* @param fileName 导出时的excel名称 |
|||
* @param response |
|||
*/ |
|||
private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) throws IOException { |
|||
//把数据添加到excel表格中
|
|||
Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF); |
|||
downLoadExcel(fileName, response, workbook); |
|||
} |
|||
|
|||
/** |
|||
* excel 导出 |
|||
* |
|||
* @param list 数据列表 |
|||
* @param pojoClass pojo类型 |
|||
* @param fileName 导出时的excel名称 |
|||
* @param response |
|||
* @param exportParams 导出参数(标题、sheet名称、是否创建表头,表格类型) |
|||
*/ |
|||
private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) throws IOException { |
|||
//把数据添加到excel表格中
|
|||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list); |
|||
downLoadExcel(fileName, response, workbook); |
|||
} |
|||
|
|||
/** |
|||
* excel 导出 |
|||
* |
|||
* @param list 数据列表 |
|||
* @param pojoClass pojo类型 |
|||
* @param fileName 导出时的excel名称 |
|||
* @param exportParams 导出参数(标题、sheet名称、是否创建表头,表格类型) |
|||
* @param response |
|||
*/ |
|||
public static void exportExcel(List<?> list, Class<?> pojoClass, String fileName, ExportParams exportParams, HttpServletResponse response) throws IOException { |
|||
defaultExport(list, pojoClass, fileName, response, exportParams); |
|||
} |
|||
|
|||
/** |
|||
* excel 导出 |
|||
* |
|||
* @param list 数据列表 |
|||
* @param title 表格内数据标题 |
|||
* @param sheetName sheet名称 |
|||
* @param pojoClass pojo类型 |
|||
* @param fileName 导出时的excel名称 |
|||
* @param response |
|||
*/ |
|||
public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) throws IOException { |
|||
defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName, ExcelType.XSSF)); |
|||
} |
|||
|
|||
|
|||
|
|||
/** |
|||
* excel 导出 |
|||
* |
|||
* @param list 数据列表 |
|||
* @param title 表格内数据标题 |
|||
* @param sheetName sheet名称 |
|||
* @param pojoClass pojo类型 |
|||
* @param fileName 导出时的excel名称 |
|||
* @param isCreateHeader 是否创建表头 |
|||
* @param response |
|||
*/ |
|||
public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) throws IOException { |
|||
ExportParams exportParams = new ExportParams(title, sheetName, ExcelType.XSSF); |
|||
exportParams.setCreateHeadRows(isCreateHeader); |
|||
defaultExport(list, pojoClass, fileName, response, exportParams); |
|||
} |
|||
/** |
|||
* 根据模板生成excel后导出 |
|||
* @param templatePath 模板路径 |
|||
* @param map 数据集合 |
|||
* @param fileName 文件名 |
|||
* @param response |
|||
* @throws IOException |
|||
*/ |
|||
public static void exportExcel(TemplateExportParams templatePath, Map<String, Object> map, String fileName, HttpServletResponse response) throws IOException { |
|||
Workbook workbook = ExcelExportUtil.exportExcel(templatePath, map); |
|||
downLoadExcel(fileName, response, workbook); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* excel下载 |
|||
* |
|||
* @param fileName 下载时的文件名称 |
|||
* @param response |
|||
* @param workbook excel数据 |
|||
*/ |
|||
private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) throws IOException { |
|||
try { |
|||
response.setCharacterEncoding("UTF-8"); |
|||
response.setHeader("content-Type", "application/vnd.ms-excel"); |
|||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "UTF-8")); |
|||
workbook.write(response.getOutputStream()); |
|||
} catch (Exception e) { |
|||
throw new IOException(e.getMessage()); |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
/** |
|||
* excel 导入 |
|||
* |
|||
* @param file excel文件 |
|||
* @param pojoClass pojo类型 |
|||
* @param <T> |
|||
* @return |
|||
*/ |
|||
public static <T> List<T> importExcel(MultipartFile file, Class<T> pojoClass) throws IOException { |
|||
return importExcel(file, 1, 1, pojoClass); |
|||
} |
|||
|
|||
/** |
|||
* excel 导入 |
|||
* |
|||
* @param filePath excel文件路径 |
|||
* @param titleRows 表格内数据标题行 |
|||
* @param headerRows 表头行 |
|||
* @param pojoClass pojo类型 |
|||
* @param <T> |
|||
* @return |
|||
*/ |
|||
public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException { |
|||
if (StringUtils.isBlank(filePath)) { |
|||
return null; |
|||
} |
|||
ImportParams params = new ImportParams(); |
|||
params.setTitleRows(titleRows); |
|||
params.setHeadRows(headerRows); |
|||
params.setNeedSave(true); |
|||
params.setSaveUrl("/tmp/excel/"); |
|||
try { |
|||
return ExcelImportUtil.importExcel(new File(filePath), pojoClass, params); |
|||
} catch (NoSuchElementException e) { |
|||
throw new IOException("模板不能为空"); |
|||
} catch (Exception e) { |
|||
throw new IOException(e.getMessage()); |
|||
} |
|||
} |
|||
|
|||
|
|||
/** |
|||
* excel 导入 |
|||
* |
|||
* @param file 上传的文件 |
|||
* @param titleRows 表格内数据标题行 |
|||
* @param headerRows 表头行 |
|||
* @param pojoClass pojo类型 |
|||
* @param <T> |
|||
* @return |
|||
*/ |
|||
public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException { |
|||
if (file == null) { |
|||
return null; |
|||
} |
|||
try { |
|||
return importExcel(file.getInputStream(), titleRows, headerRows, pojoClass); |
|||
} catch (Exception e) { |
|||
throw new IOException(e.getMessage()); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* excel 导入 |
|||
* |
|||
* @param inputStream 文件输入流 |
|||
* @param titleRows 表格内数据标题行 |
|||
* @param headerRows 表头行 |
|||
* @param pojoClass pojo类型 |
|||
* @param <T> |
|||
* @return |
|||
*/ |
|||
public static <T> List<T> importExcel(InputStream inputStream, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException { |
|||
if (inputStream == null) { |
|||
return null; |
|||
} |
|||
ImportParams params = new ImportParams(); |
|||
params.setTitleRows(titleRows); |
|||
params.setHeadRows(headerRows); |
|||
params.setSaveUrl("/tmp/excel/"); |
|||
params.setNeedSave(true); |
|||
try { |
|||
return ExcelImportUtil.importExcel(inputStream, pojoClass, params); |
|||
} catch (NoSuchElementException e) { |
|||
throw new IOException("excel文件不能为空"); |
|||
} catch (Exception e) { |
|||
throw new IOException(e.getMessage()); |
|||
} |
|||
} |
|||
/** |
|||
* excel 导入,有错误信息 |
|||
* |
|||
* @param file 上传的文件 |
|||
* @param pojoClass pojo类型 |
|||
* @param <T> |
|||
* @return |
|||
*/ |
|||
public static <T> ExcelImportResult<T> importExcelMore(MultipartFile file,Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException { |
|||
if (file == null) { |
|||
return null; |
|||
} |
|||
try { |
|||
return importExcelMore(file.getInputStream(), titleRows, headerRows, pojoClass); |
|||
} catch (Exception e) { |
|||
throw new IOException(e.getMessage()); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* excel 导入 |
|||
* |
|||
* @param inputStream 文件输入流 |
|||
* @param pojoClass pojo类型 |
|||
* @param <T> |
|||
* @return |
|||
*/ |
|||
private static <T> ExcelImportResult<T> importExcelMore(InputStream inputStream,Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException { |
|||
if (inputStream == null) { |
|||
return null; |
|||
} |
|||
ImportParams params = new ImportParams(); |
|||
params.setTitleRows(titleRows);//表格内数据标题行
|
|||
params.setHeadRows(headerRows);//表头行
|
|||
params.setSaveUrl("/tmp/excel/"); |
|||
params.setNeedSave(true); |
|||
params.setNeedVerify(true); |
|||
try { |
|||
return ExcelImportUtil.importExcelMore(inputStream, pojoClass, params); |
|||
} catch (NoSuchElementException e) { |
|||
throw new IOException("excel文件不能为空"); |
|||
} catch (Exception e) { |
|||
throw new IOException(e.getMessage()); |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,31 @@ |
|||
package com.epmet.commons.tools.utils; |
|||
|
|||
import cn.afterturn.easypoi.handler.inter.IExcelDataModel; |
|||
import cn.afterturn.easypoi.handler.inter.IExcelModel; |
|||
|
|||
public class ExcelVerifyInfo implements IExcelModel, IExcelDataModel { |
|||
|
|||
private String errorMsg; |
|||
|
|||
private int rowNum; |
|||
|
|||
@Override |
|||
public Integer getRowNum() { |
|||
return rowNum; |
|||
} |
|||
|
|||
@Override |
|||
public void setRowNum(Integer rowNum) { |
|||
this.rowNum = rowNum; |
|||
} |
|||
|
|||
@Override |
|||
public String getErrorMsg() { |
|||
return errorMsg; |
|||
} |
|||
|
|||
@Override |
|||
public void setErrorMsg(String errorMsg) { |
|||
this.errorMsg = errorMsg; |
|||
} |
|||
} |
Loading…
Reference in new issue