/**
* 创建excel
*
* 此方法为封装简单excel的导出 ,
* 表头或者日期等信息写在map ,
* list数据单独传可以实现简单导出
*
* @param response 响应
* @param fileName 文件名称
* @param map map
* @param list 列表
* @throws IOException ioexception
*/
public static void createExcel(HttpServletResponse response, String fileName, Map map, List> list) throws IOException {
ClassPathResource cpr = new ClassPathResource("file" + File.separator + fileName);
OutputStream outputStream = response.getOutputStream();
response.setContentType(CONTENT_TYPE);
response.setCharacterEncoding(CHARACTER_ENCODING);
response.setHeader(HEADER_S1, HEADER_S2 + fileName);
ExcelWriter excelWriter = EasyExcel.write(outputStream).autoTrim(false).withTemplate(cpr.getInputStream()).excelType(ExcelTypeEnum.XLS).build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
map.put("a", "");
excelWriter.fill(map, writeSheet);
excelWriter.fill(list, fillConfig, writeSheet);
excelWriter.finish();
}
此方法需结合resource file路径下的文件实现指定导入字段
事例:
@Override
public void downLoadInBound(EquipmentDetailDTO dto) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletResponse response = attributes.getResponse();
// 入库单打印
HashMap rkd = new HashMap<>();
rkd.put("shopUnit", dto.getShopUnit());
rkd.put("supplierName", dto.getSupplierIdManufacturerName());
rkd.put("buyTime", DateUtil.nowDate());
StringBuilder checkNo = new StringBuilder();
List strings = Arrays.asList(dto.getCheckNo().split(","));
if (Objects.nonNull(strings)) {
checkNo.append(strings.get(0) + "-" + strings.get(strings.size() - 1));
}
rkd.put("checkNumber", checkNo.toString());
rkd.put("applyDocumentNo", dto.getEquipmentCode());
rkd.put("eqName", dto.getEquipmentName());
rkd.put("brand", dto.getBrandName());
rkd.put("modelSpecs", dto.getSpecs());
rkd.put("productionArea", dto.getOriginPlace());
rkd.put("manufacturerName", dto.getProductionInfoName());
rkd.put("className", dto.getEquipmentType());
rkd.put("unit", dto.getUnit());
rkd.put("eqCount", dto.getEquipmentCount());
rkd.put("actualAmount", dto.getTotalSettlementAmount().toString());
rkd.put("purchaser", dto.getPurchaserName());
rkd.put("userName", dto.getCreateNo());
rkd.put("accounting", dto.getAccountingUserName());
rkd.put("acceptor", dto.getCheckUserName());
if (Objects.nonNull(dto.getObtain())) {
dto.getObtain().forEach(item -> {
item.setMoneyType(solveMoneyType(item.getMoneyType()));
item.setMoneyAccount(item.getAmountNum().toString());
});
dto.getObtain().get(0).setArrivalDateString(DateUtil.nowDate());
dto.getObtain().get(0).setRemark(dto.getRemark());
}
try {
ExcelUtil.createExcel(response, "ckds.xls", rkd, new ArrayList<>());
} catch (IOException e) {
e.printStackTrace();
}
}