package com.finance.common.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.enmus.ExcelType;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.net.URLEncoder;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.NoSuchElementException;
|
|
/**
|
* Excel导入导出工具类
|
* @author lenovo
|
*/
|
|
public class ExcelUtil {
|
/**
|
* 导入
|
* @param file
|
* @param titleRows
|
* @param headerRows
|
* @param pojoClass
|
* @return
|
* @param <T>
|
*/
|
public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass) {
|
if (file == null) {
|
return null;
|
}
|
ImportParams params = new ImportParams();
|
params.setTitleRows(titleRows);
|
params.setHeadRows(headerRows);
|
List<T> list = null;
|
try {
|
InputStream inputStream = file.getInputStream();
|
list = ExcelImportUtil.importExcel(inputStream, pojoClass, params);
|
inputStream.close();
|
} catch (NoSuchElementException e) {
|
throw new RuntimeException("excel文件不能为空");
|
} catch (Exception e) {
|
throw new RuntimeException(e.getMessage());
|
|
}
|
return list;
|
}
|
|
/**
|
* 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 {
|
ExportParams exportParams = new ExportParams(title, sheetName, ExcelType.XSSF);
|
defaultExport(list, pojoClass, fileName, response,exportParams);
|
}
|
|
|
/**
|
* 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 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());
|
}
|
}
|
}
|