本文共 6440 字,大约阅读时间需要 21 分钟。
3.11 org.apache.poi poi 3.11 org.apache.poi poi-ooxml 3.11 org.apache.poi poi-ooxml-schemas 3.11
1.2.访问
$("#exportXlsBtn").click(function(){ // 下载效果 不能是ajax异步 location.href = "/excelInpost/downLoad?filename=运单模板表.xlsx"; });
1.3 用法(页面)
运单批量导入
/** * 模板下载 * @param filename 文件名 * @return * @throws Exception */ @GetMapping("/downLoad") public ResponseEntitydownLoadExcel(String filename) throws Exception { System.out.println(filename+"-------------------------------------------------------"); /** * 查找数据之后,下面只需要将内容写进xls中,然后下载 */ //1 创建工作簿 Workbook wb = new XSSFWorkbook(); //2 创建工作表 Sheet sheet = wb.createSheet(); /** * 定义公共变量 */ int rowNo=0,cellNo=0;//行号 和 列号 Row nRow = null;// 行对象通用变量 Cell nCell = null;// 单元格对象通用变量 /****************大标题打印****************/ //3 创建行 nRow = sheet.createRow(rowNo); // 设置行高 nRow.setHeightInPoints(36); //4 创建单元格 nCell = nRow.createCell(cellNo); //5 设置内容 nCell.setCellValue("运单数据"); //6 设置内容格式 // 合并单元格 //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列 sheet.addMergedRegion(new CellRangeAddress(0, 0, (short) 0, (short) 9)); // 样式 CellStyle bigTitleCellStyle = bigTitleStyle(wb); nCell.setCellStyle(bigTitleCellStyle); rowNo++; nRow = sheet.createRow(rowNo); //小标题 String[] titles={"编号","产品","快递产品类型","发件人姓名","发件人电话","发件人地址","收件人姓名","收件人电话","收件人公司","收件人地址"}; for (int i = 0;i 自动 sheet.autoSizeColumn(i); sheet.setColumnWidth(i,sheet.getColumnWidth(i)*17/10); } //下载 DownloadUtil downloadUtil = new DownloadUtil(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); wb.write(byteArrayOutputStream); downloadUtil.download(byteArrayOutputStream,response,filename); return new ResponseEntity<>(HttpStatus.OK); }
1.5 上传导入
/** * 导入 * @return */ @RequestMapping("/excelUp") public ResponseEntitybatchImport(@RequestParam("myFile") MultipartFile file){ try { // 1.1 获取文件名 String originalFilename = file.getOriginalFilename();// 文件名 String name = file.getName();//此名字对应 文本框的name属性的值 // 1.2 设置保存的path String path = "d:\\"+ UUID.randomUUID().toString()+originalFilename; // 1.3 创建File--path File myFile = new File(path); // 1.4 复制 file.transferTo(myFile); // 解析xls,将数据存入数据库 // 2 创建Workbook // 2.1 创建输入流 FileInputStream is = new FileInputStream(myFile);// InputStream is = file.getInputStream(); // 2.2 创建Workbook Workbook wb = new XSSFWorkbook(is); // 3 获取Sheet Sheet sheet = wb.getSheetAt(0); // 定义List集合存放数据,最后一次性保存 List list = new ArrayList<>(); // 4 获取row for(Row row:sheet){ // 5 获取单元格数据 // 跳过第一行 if(row.getRowNum()==0 || row.getRowNum()==1){ continue; } // 如果第一列为空,整条数据都不读取 if(row.getCell(0)==null || (int) row.getCell(0).getNumericCellValue()==0){ continue; } WayBill wayBill = new WayBill(); //编号 int value0 = (int) row.getCell(0).getNumericCellValue(); wayBill.setId(value0); //产品 wayBill.setGoodsType(row.getCell(1).getStringCellValue()); //快递产品类型 wayBill.setSendProNum(row.getCell(2).getStringCellValue()); //发件人姓名 wayBill.setSendName(row.getCell(3).getStringCellValue()); //发件人电话 String value4 =""+ (int) row.getCell(4).getNumericCellValue(); wayBill.setSendMobile(value4); //发件人地址 wayBill.setSendAddress(row.getCell(5).getStringCellValue()); //收件人姓名 wayBill.setRecName(row.getCell(6).getStringCellValue()); //收件人电话 wayBill.setRecMobile(""+ (int) row.getCell(7).getNumericCellValue()); //收件人公司 wayBill.setRecCompany(row.getCell(8).getStringCellValue()); //收件人地址 wayBill.setRecAddress(row.getCell(9).getStringCellValue()); list.add(wayBill); } // 6 保存至数据库 wayBillService.saveWayBillAll(list); }catch (Exception e){ e.printStackTrace(); return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } return new ResponseEntity<>(HttpStatus.OK); } public CellStyle bigTitleStyle(Workbook wb){ // 创建格式 CellStyle cellStyle = wb.createCellStyle(); // 水平对齐方式 cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 垂直居中 cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); // 设置字体 Font font = wb.createFont(); // 是数值的1/20 大小 font.setFontHeight((short) 480); font.setBold(true); font.setColor(Font.COLOR_RED); cellStyle.setFont(font); return cellStyle; } public CellStyle titleStyle(Workbook wb){ CellStyle cellStyle = wb.createCellStyle(); cellStyle.setBorderTop(CellStyle.BORDER_THIN); cellStyle.setBorderRight(CellStyle.BORDER_THIN); cellStyle.setBorderBottom(CellStyle.BORDER_THIN); cellStyle.setBorderLeft(CellStyle.BORDER_THIN); Font font = wb.createFont(); font.setFontHeight((short)300); cellStyle.setFont(font); return cellStyle; }
转载地址:http://pfkul.baihongyu.com/