diff --git a/ics-admin/pom.xml b/ics-admin/pom.xml index 1194e3d..722b795 100644 --- a/ics-admin/pom.xml +++ b/ics-admin/pom.xml @@ -67,6 +67,23 @@ 0.4.2 + + + cn.afterturn + easypoi-base + 4.1.0 + + + cn.afterturn + easypoi-web + 4.1.0 + + + cn.afterturn + easypoi-annotation + 4.1.0 + + diff --git a/ics-admin/src/main/java/com/ics/admin/controller/CustomerStaffController.java b/ics-admin/src/main/java/com/ics/admin/controller/CustomerStaffController.java index 4d4cf65..327f843 100644 --- a/ics-admin/src/main/java/com/ics/admin/controller/CustomerStaffController.java +++ b/ics-admin/src/main/java/com/ics/admin/controller/CustomerStaffController.java @@ -10,7 +10,9 @@ import com.ics.admin.domain.meeting.*; import com.ics.admin.listener.ImportPowerWaterFeeListener; import com.ics.admin.service.*; import com.ics.admin.service.meeting.*; +import com.ics.admin.utils.EasyPoiUtils; import com.ics.admin.utils.ExcelView; +import com.ics.admin.utils.SellerVO; import com.ics.admin.vo.ImportPowerWaterFeeVO; import com.ics.common.constant.Constants; import com.ics.common.core.controller.BaseController; @@ -44,6 +46,7 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.net.URLEncoder; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -293,9 +296,20 @@ public class CustomerStaffController extends BaseController { @Ignore @PostMapping("/exportTemplate") public void exportTemplate(HttpServletResponse response) throws IOException { - List icsCustomerStaffs = icsCustomerStaffService.selectIcsCustomerStaffList(new IcsCustomerStaff()); - ExcelUtil util = new ExcelUtil(IcsCustomerStaff.class); - util.exportExcel(icsCustomerStaffs, "客户员工表"); +// List icsCustomerStaffs = icsCustomerStaffService.selectIcsCustomerStaffList(new IcsCustomerStaff()); +// ExcelUtil util = new ExcelUtil(IcsCustomerStaff.class); +// util.exportExcel(icsCustomerStaffs, "客户员工表"); + + SellerVO sellerVO = new SellerVO(); + sellerVO.setId("1"); + sellerVO.setName("admin"); + sellerVO.setPhoneNo("10086"); + List sellerVOList = new ArrayList<>(); + sellerVOList.add(sellerVO); + String title = "全部商家"; + String sheetName = "数据"; + String fileName = sheetName + "-" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xls"; + EasyPoiUtils.exportExcel(sellerVOList, title, sheetName, SellerVO.class, fileName, true, response); } diff --git a/ics-admin/src/main/java/com/ics/admin/utils/EasyPoiUtils.java b/ics-admin/src/main/java/com/ics/admin/utils/EasyPoiUtils.java new file mode 100644 index 0000000..a6d1048 --- /dev/null +++ b/ics-admin/src/main/java/com/ics/admin/utils/EasyPoiUtils.java @@ -0,0 +1,167 @@ +package com.ics.admin.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.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; + +public class EasyPoiUtils { + + public static void sellerExportExcel(List list, String title, String sheetName, Class pojoClass, String fileName, HttpServletResponse response) { + defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName)); + } + + /** + * 功能描述:复杂导出Excel,包括文件名以及表名。创建表头 + * + * @param list 导出的实体类 + * @param title 表头名称 + * @param sheetName sheet表名 + * @param pojoClass 映射的实体类 + * @param isCreateHeader 是否创建表头 + * @param fileName + * @param response + * @return + */ + public static void exportExcel(List list, String title, String sheetName, Class pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) { + ExportParams exportParams = new ExportParams(title, sheetName); + exportParams.setCreateHeadRows(isCreateHeader); + defaultExport(list, pojoClass, fileName, response, exportParams); + } + + + /** + * 功能描述:Map 集合导出 + * + * @param list 实体集合 + * @param fileName 导出的文件名称 + * @param response + * @return + */ + public static void exportExcel(List> list, String fileName, HttpServletResponse response) { + defaultExport(list, fileName, response); + } + + /** + * 功能描述:默认导出方法 + * + * @param list 导出的实体集合 + * @param fileName 导出的文件名 + * @param pojoClass pojo实体 + * @param exportParams ExportParams封装实体 + * @param response + * @return + */ + private static void defaultExport(List list, Class pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) { + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list); + if (workbook != null) { + downLoadExcel(fileName, response, workbook); + } + } + + /** + * 功能描述:Excel导出 + * + * @param fileName 文件名称 + * @param response + * @param workbook Excel对象 + * @return + */ + private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) { + try { + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", "attachment;filename=" +URLEncoder.encode(fileName, "UTF-8") ); + workbook.write(response.getOutputStream()); + + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * 功能描述:默认导出方法 + * + * @param list 导出的实体集合 + * @param fileName 导出的文件名 + * @param response + * @return + */ + private static void defaultExport(List> list, String fileName, HttpServletResponse response) { + Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF); + if (workbook != null) ; + downLoadExcel(fileName, response, workbook); + } + + + /** + * 功能描述:根据文件路径来导入Excel + * + * @param filePath 文件路径 + * @param titleRows 表标题的行数 + * @param headerRows 表头行数 + * @param pojoClass Excel实体类 + * @return + */ + public static List importExcel(String filePath, Integer titleRows, Integer headerRows, Class pojoClass) { + //判断文件是否存在 + if (StringUtils.isBlank(filePath)) { + return null; + } + ImportParams params = new ImportParams(); + params.setTitleRows(titleRows); + params.setHeadRows(headerRows); + List list = null; + try { + list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params); + } catch (NoSuchElementException e) { + throw new RuntimeException("模板不能为空"); + } catch (Exception e) { + e.printStackTrace(); + + } + return list; + } + + /** + * 功能描述:根据接收的Excel文件来导入Excel,并封装成实体类 + * + * @param file 上传的文件 + * @param titleRows 表标题的行数 + * @param headerRows 表头行数 + * @param pojoClass Excel实体类 + * @return + */ + public static List importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class pojoClass) { + if (file == null) { + return null; + } + ImportParams params = new ImportParams(); + params.setTitleRows(titleRows); + params.setHeadRows(headerRows); + List list = null; + try { + list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params); + } catch (NoSuchElementException e) { + throw new RuntimeException("excel文件不能为空"); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + + } + return list; + } +} \ No newline at end of file diff --git a/ics-admin/src/main/java/com/ics/admin/utils/SellerVO.java b/ics-admin/src/main/java/com/ics/admin/utils/SellerVO.java new file mode 100644 index 0000000..2b0f719 --- /dev/null +++ b/ics-admin/src/main/java/com/ics/admin/utils/SellerVO.java @@ -0,0 +1,26 @@ +package com.ics.admin.utils; + + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + + +@Data +public class SellerVO { + /** + * 商户ID + */ + @Excel(name = "ID", height = 11, width = 15) + private String id; + /** + * 商户电话 + */ + @Excel(name = "账号", height = 11, width = 15) + private String phoneNo; + /** + * 商户名称 + */ + @Excel(name = "商户名称", height = 11, width = 15) + private String name; + +}