根据Excel模板存储数据,并下载
@RequestMapping("/exportList") @ResponseBody public Map<String, Object> exportList(HttpServletRequest request, HttpServletResponse response, HttpSession session, WarehouseInboundParamVO vo) throws IOException, InvalidFormatException { vo.setPage(0); vo.setPageSize(2000); PageQueryResult<WarehouseInboundVO> list = warehouseInboundService.selectInboundList(vo); if (list == null) { System.out.println("导出店铺数据为空,没有查询到数据!!!!"); Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("1"); Row row = sheet.createRow((short) 0); row.createCell(0).setCellValue("没有数据"); row = sheet.createRow(1); row.createCell(0).setCellValue("没有找到数据 - - !!!!!"); ExcelUtil.downloadExcel(response, wb, "入库记录"); return APIUtil.toMap(HttpStatus.SUCCESS.getValue(), true); } List<WarehouseInboundVO> listVo = list.getData(); if (listVo == null || listVo.size() == 0) { System.out.println("导出店铺数据为空,没有查询到数据!!!!"); Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("1"); Row row = sheet.createRow((short) 0); row.createCell(0).setCellValue("没有数据"); row = sheet.createRow(1); row.createCell(0).setCellValue("没有找到数据 - - !!!!!"); ExcelUtil.downloadExcel(response, wb, "入库记录"); return APIUtil.toMap(HttpStatus.SUCCESS.getValue(), true); } logger.info("finance..记录数:{}", listVo.size()); List<Map<String, Object>> listArr = new ArrayList<>(); for (int i = 0; i < listVo.size(); i++) { InboundOrder inbound = warehouseInboundService.getInbound(listVo.get(i).getId()); Date createDate = listVo.get(i).getCreateDate(); Calendar calendar = Calendar.getInstance(); calendar.setTime(createDate); Integer year = calendar.get(Calendar.YEAR); Integer month = calendar.get(Calendar.MONTH) + 1; // 第一个月从0开始,所以得到月份+1 Integer day = calendar.get(Calendar.DAY_OF_MONTH); List<InboundItem> inboundItems = inbound.getItems(); for (int j = 0; j < inboundItems.size(); j++) { WarehouseGoods goods = goodsQueryService.getWarehouseGoods(inboundItems.get(j).getItemId()); // 时间 Map<String, Object> map = new HashMap<String, Object>(); map.put("time", year + "/" + month + "/" + day); map.put("year", year); map.put("month", month); map.put("day", day); if (StringUtil.isEmpty(goods.getItemNum())) { map.put("itemNum", "-"); } else { map.put("itemNum", goods.getItemNum()); } map.put("barCode", goods.getBarCode()); if (StringUtil.isEmpty(goods.getCategoryOneName())) { map.put("categoryOneName", "-"); } else { map.put("categoryOneName", goods.getCategoryOneName()); } if (StringUtil.isEmpty(goods.getCategoryTwoName())) { map.put("categoryTwoName", "-"); } else { map.put("categoryTwoName", goods.getCategoryTwoName()); } if (StringUtil.isEmpty(goods.getBrandName())) { map.put("brandName", "-"); } else { map.put("brandName", goods.getBrandName()); } if (StringUtil.isEmpty(inboundItems.get(j).getItemName())) { map.put("itemName", "-"); } else { map.put("itemName", inboundItems.get(j).getItemName()); } if (StringUtil.isEmpty(inboundItems.get(j).getSpecification())) { map.put("specification", "-"); } else { map.put("specification", inboundItems.get(j).getSpecification()); } if (StringUtil.isEmpty(goods.getSpecificationName())) { map.put("specificationName", "-"); } else { map.put("specificationName", goods.getSpecificationName()); } if (StringUtil.isEmpty(inbound.getSupplierName())) { map.put("supplierName", "-"); } else { map.put("supplierName", inbound.getSupplierName());// 供应商 } map.put("specificationNum", goods.getSpecificationNum()); map.put("num", inboundItems.get(j).getNum());// 库 数量 BigDecimal price = BigDecimal.valueOf(inboundItems.get(j).getPrice()); BigDecimal num = BigDecimal.valueOf(inboundItems.get(j).getRealNum()); BigDecimal total = price.multiply(num); map.put("total", total);// 采购金额 listArr.add(map); } } String TEMPLATE_PATH = "E://ziyuan/ruku.xlsx"; Resource resource = new FileSystemResource(TEMPLATE_PATH); Workbook workbook = WorkbookFactory.create(resource.getInputStream()); Sheet sheet = workbook.getSheetAt(0); final int startRow = 2; for (int i = startRow; i < listArr.size() + startRow; i++) { int rowNum = i - startRow; Row row = sheet.getRow(i); if (row == null) { row = sheet.createRow(i); } CellStyle contextstyle = workbook.createCellStyle(); DataFormat df = workbook.createDataFormat(); contextstyle.setDataFormat(df.getFormat("#,##0.00")); Map<String, Object> map = listArr.get(rowNum); Cell cell = row.getCell(0); if (cell == null) { cell = row.createCell(0); } cell.setCellValue(rowNum); cell = row.getCell(1); if (cell == null) { cell = row.createCell(1); } cell.setCellValue(map.get("time").toString()); cell = row.getCell(2); if (cell == null) { cell = row.createCell(2); } cell.setCellValue(map.get("year").toString()); cell = row.getCell(3); if (cell == null) { cell = row.createCell(3); } cell.setCellValue(map.get("month").toString()); cell = row.getCell(4); if (cell == null) { cell = row.createCell(4); } cell.setCellValue(map.get("day").toString()); cell = row.getCell(5); if (cell == null) { cell = row.createCell(5); } cell.setCellValue(map.get("itemNum").toString()); cell = row.getCell(6); if (cell == null) { cell = row.createCell(6); } cell.setCellValue(map.get("barCode").toString()); cell = row.getCell(7); if (cell == null) { cell = row.createCell(7); } cell.setCellValue(map.get("categoryOneName").toString()); cell = row.getCell(8); if (cell == null) { cell = row.createCell(8); } cell.setCellValue(map.get("categoryTwoName").toString()); cell = row.getCell(9); if (cell == null) { cell = row.createCell(9); } cell.setCellValue(map.get("brandName").toString()); cell = row.getCell(10); if (cell == null) { cell = row.createCell(10); } cell.setCellValue(map.get("itemName").toString()); cell = row.getCell(11); if (cell == null) { cell = row.createCell(11); } cell.setCellValue(map.get("specification").toString()); cell = row.getCell(12); if (cell == null) { cell = row.createCell(12); } cell.setCellValue(map.get("specificationNum").toString()); cell = row.getCell(13); if (cell == null) { cell = row.createCell(13); } cell.setCellValue(map.get("specificationName").toString()); cell = row.getCell(15); if (cell == null) { cell = row.createCell(15); } cell.setCellValue(map.get("num").toString()); cell = row.getCell(16); if (cell == null) { cell = row.createCell(16); } Double total=Double.valueOf(map.get("total").toString())/100; cell.setCellValue(total); cell = row.getCell(20); if (cell == null) { cell = row.createCell(20); } cell.setCellValue(map.get("supplierName").toString()); } ExcelUtil.downloadExcel(response, workbook, "入库记录"); return APIUtil.toMap(HttpStatus.SUCCESS.getValue(), true); }
package com.baoqilai.ddg.util; import java.io.*; import java.text.SimpleDateFormat; import java.util.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.multipart.MultipartFile; /** * Created by liuchenyu on 2017/4/8. * Excel操作工具类 */ public class ExcelUtil { private static final Logger logger = LoggerFactory.getLogger(ExcelUtil.class); /** * 解析Excel * * @param excel 文件 * @return List集合 */ public static List<Map<Integer, Object>> parseExcel(File excel) throws Exception { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(excel)); HSSFSheet sheet = workbook.getSheetAt(0); int lastRowIndex = sheet.getLastRowNum(); List<Map<Integer, Object>> excelData = new ArrayList<>(); for (int i = 1; i <= lastRowIndex; i++) { HSSFRow row = sheet.getRow(i); Iterator<Cell> cells = row.cellIterator(); Map<Integer, Object> rowData = new HashMap<>(); while (cells.hasNext()) { Cell cell = cells.next(); Integer columnIndex = cell.getColumnIndex(); if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { // 数值 if (DateUtil.isCellDateFormatted(cell)) { rowData.put(columnIndex, cell.getDateCellValue()); } else { rowData.put(columnIndex, cell.getNumericCellValue()); } } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) { // 布尔 rowData.put(columnIndex, cell.getBooleanCellValue()); } else { // 字符串 rowData.put(columnIndex, cell.getStringCellValue()); } } excelData.add(rowData); } // workbook.close(); return excelData; } public static List<Map<Integer, Object>> parseExcel2(MultipartFile excel) throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(excel.getInputStream()); XSSFSheet sheet = workbook.getSheetAt(0); int lastRowIndex = sheet.getLastRowNum(); List<Map<Integer, Object>> excelData = new ArrayList<>(); for (int i = 1; i <= lastRowIndex; i++) { XSSFRow row = sheet.getRow(i); if (null == row ) continue; Iterator<Cell> cells = row.cellIterator(); Map<Integer, Object> rowData = new HashMap<>(); while (cells.hasNext()) { Cell cell = cells.next(); Integer columnIndex = cell.getColumnIndex(); if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { // 数值 if (DateUtil.isCellDateFormatted(cell)) { rowData.put(columnIndex, cell.getDateCellValue()); } else { rowData.put(columnIndex, cell.getNumericCellValue()); } } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) { // 布尔 rowData.put(columnIndex, cell.getBooleanCellValue()); } else { // 字符串 rowData.put(columnIndex, cell.getStringCellValue()); } } excelData.add(rowData); } // workbook.close(); return excelData; } /** * desc: 导出excel表格 * author: liuchenyu * date: 2017/4/8 14:30 * * @param titles Excel表各列字段名 * @param sheetname 工作表标签名 * @param data 导出的数据源 * @param filename 导出的文件名 * @param response * @param request * @throws Exception */ public static void exportExcel(String[] titles, String sheetname, List<Map<String , Object>> data, String filename, ArrayList<String> list,HttpServletResponse response, HttpServletRequest request) throws Exception { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(sheetname); HSSFRow row = sheet.createRow(0); for (int i = 0; i < titles.length; i++) { row.createCell(i).setCellValue(titles[i]); } for (int i = 0; i < data.size(); i++) { Map<String , Object> obj = data.get(i); row = sheet.createRow(i + 1); for (int j = 0; j < list.size(); j++) { String key = list.get(j); HSSFCell cell = row.createCell(j); cell.setCellValue(obj.get(key)==null?"--":obj.get(key)+""); } } //filename = new String(filename.getBytes("gbk-8"), "iso8859-1"); String encoding = "utf-8"; String userAgent = request.getHeader("user-agent"); System.out.println("userAgent: " + userAgent); if (userAgent.toLowerCase().indexOf("msie") != -1) { encoding = "gbk"; } filename = new String(filename.getBytes(encoding), "iso8859-1"); response.setHeader("Content-Disposition", "attachment;filename=" + filename + ".xls"); workbook.write(response.getOutputStream()); // workbook.close(); } public static void downloadExcel(HttpServletResponse response, Workbook workbook, String execelName) { ByteArrayOutputStream os = new ByteArrayOutputStream(); try { workbook.write(os); } catch (IOException e) { logger.error("write data to ByteArrayOutputStream fail.", e); } byte[] content = os.toByteArray(); InputStream is = new ByteArrayInputStream(content); // 设置response参数,可以打开下载页面 //HttpServletResponse response = WebUtils.getResponse(); //response.reset(); response.setContentType("application/vnd.ms-excel;charset=utf-8"); ServletOutputStream out = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String format = sdf.format(new Date()); try { response.setHeader("Content-Disposition", "attachment;filename=" + new String((execelName + format + ".xls").getBytes(), "iso-8859-1")); out = response.getOutputStream(); } catch (Exception e1) { logger.error("write data to ServletOutputStream fail.", e1); } BufferedInputStream bis = null; BufferedOutputStream bos = null; try { bis = new BufferedInputStream(is); bos = new BufferedOutputStream(out); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } } catch (final IOException e) { logger.error("write data to ServletOutputStream fail.", e); } finally { if (bis != null) try { bis.close(); } catch (IOException e) { logger.error("close InputStream fail.", e); } if (bos != null) try { bos.close(); } catch (IOException e) { logger.error("close OutputStream fail.", e); } } } public static void noDataExcel(HttpServletResponse response, String fileName) { Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("1"); Row row = sheet.createRow((short) 0); row.createCell(0).setCellValue("没有数据"); row = sheet.createRow( 1); row.createCell(0).setCellValue("没有找到数据 - - !!!!!"); ExcelUtil.downloadExcel(response, wb, fileName); } }
/** * 导出列表 */ $scope.exportList = function () { var postData = { page: $scope.paginationConf.currentPage, pageSize: $scope.paginationConf.itemsPerPage, warehouseId:$scope.warehouseId }; if ($scope.submitted == 'pending') { postData.status = 0; } if ($scope.review == 'pending') { postData.status = 1; } if($scope.inboundNum){ postData.inboundNum = $scope.inboundNum; sessionStorage.setItem('inboundNum', $scope.inboundNum); }else { delete postData.inboundNum; sessionStorage.removeItem('inboundNum'); } if($scope.linkDocType || $scope.linkDocType==''){ postData.linkDocType = $scope.linkDocType; sessionStorage.setItem('linkDocType', $scope.linkDocType); }else { delete postData.linkDocType; sessionStorage.removeItem('linkDocType'); } if($scope.linkDocNum){ postData.linkDocNum = $scope.linkDocNum; sessionStorage.setItem('linkDocNum', $scope.linkDocNum); }else { delete postData.linkDocNum; sessionStorage.removeItem('linkDocNum'); } if($scope.supplierName!='' &&$scope.supplierName!=undefined){ postData.supplierName = $scope.supplierName; sessionStorage.setItem('supplierName', $scope.supplierName); }else { delete postData.supplierName; sessionStorage.removeItem('supplierName'); } if($scope.supplierId){ postData.supplierId = $scope.supplierId; sessionStorage.setItem('supplierId', $scope.supplierId); }else if($scope.supplierId!='' && $scope.supplierId!=undefined){ $scope.supplierId = Number(sessionStorage.getItem('supplierId')); postData.supplierId = $scope.supplierId; }else { delete postData.supplierId; sessionStorage.removeItem('supplierId'); } if($('#date_first').val() && $('#date_last').val()){ postData.createStartDate = $('#date_first').val() + ' 00:00:00'; postData.createEndDate = $('#date_last').val() + ' 23:59:59'; sessionStorage.setItem('createStartDate', $('#date_first').val()); sessionStorage.setItem('createEndDate', $('#date_last').val()); }else if(sessionStorage.getItem('createStartDate')){ $('#date_first').val(sessionStorage.getItem('createStartDate')); $('#date_last').val(sessionStorage.getItem('createEndDate')); postData.createStartDate = $('#date_first').val() + ' 00:00:00'; postData.createEndDate = $('#date_last').val() + ' 23:59:59'; }else { delete postData.createStartDate; delete postData.createEndDate; sessionStorage.removeItem('createStartDate'); sessionStorage.removeItem('createEndDate'); } $http({ url: adminUrl+'scp/inbound/exportList', method: "GET",//接口方法 params: postData, headers: { 'Content-type': 'application/json' }, responseType: 'arraybuffer' }).success(function (data, status, headers, config) { var blob = new Blob([data], {type: "application/vnd.ms-excel"}); var objectUrl = URL.createObjectURL(blob); var a = document.createElement('a'); document.body.appendChild(a); a.setAttribute('style', 'display:none'); a.setAttribute('href', objectUrl); var filename="入库记录.xls"; a.setAttribute('download', filename); a.click(); URL.revokeObjectURL(objectUrl); }).error(function (data, status, headers, config) { }); };