博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java与Excel的交互!-
阅读量:6843 次
发布时间:2019-06-26

本文共 6440 字,大约阅读时间需要 21 分钟。

-1. Excel (POI)

1.1 导入poi报表需要的jar包

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 用法(页面)

            
运单批量导入

1.4 用法(后台) --->自定义模板下载

/**     * 模板下载     * @param filename 文件名     * @return     * @throws Exception     */    @GetMapping("/downLoad")    public ResponseEntity
downLoadExcel(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 ResponseEntity
batchImport(@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/

你可能感兴趣的文章
iOS委托方法不能执行
查看>>
FastDFS分布式文件存储系统
查看>>
python核心编程笔记chapter 15
查看>>
VMX :Acknowledge interrupt on exit
查看>>
AppStore审核
查看>>
Keepalived
查看>>
Android分屏多窗口实践
查看>>
拉上微信做转转,58赶集要重构二手业务,终于认真了?
查看>>
zabbix自动发现结合shell实现自动发现占用内存最大top10进程并监控其资源
查看>>
photoshop windows10 快捷键不能使用
查看>>
域控制器活动目录之备份与恢复
查看>>
Java生成PDF文件 Java生成execl文件
查看>>
每天提高一点点
查看>>
Android动画效果translate、scale、alpha、rotate详解
查看>>
linux下查找文件命令总结find、locate、whereis、which、type
查看>>
微服务架构与实践
查看>>
mkdir命令练习
查看>>
Tomcat源码分析(二)请求过程分析
查看>>
累加脚本
查看>>
zabbix汉化
查看>>