Java 利用POI进行excel文件导入时校验数据,并且追加错误批注

2018-01-11 - 11,450 Views - 0 Goods - Nothing

首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的

private void setpz(Workbook work,Sheet sheet,String fileType,String path,int row,int col,String str) throws IOException{
		
	        XSSFDrawing p = ((XSSFSheet)sheet).createDrawingPatriarch();
	        XSSFCell cell = (XSSFCell) sheet.getRow(row).getCell(col);
	        if(cell == null){//如果你获取的单元格是空进行创建新的cell,再追加批注,不然null指针
	        	 XSSFRow r = (XSSFRow) sheet.getRow(row);
	 	        cell = r.createCell((short) col);
	        }
	        XSSFComment comment = p.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, (short) 3, 3, (short) 5, 6));
	        XSSFRichTextString rtf = new XSSFRichTextString(str);
	        XSSFFont commentFormatter = (XSSFFont) work.createFont();
	        rtf.applyFont(commentFormatter);
	        comment.setString(rtf);
	        cell.setCellComment(comment);
		}
    	        //如果在这里不学我直接输出,需要保存文件或者其他操作,你可以使用内存流来处理你所有的批注
                //ByteArrayOutputStream
    		String filePath = "e:/批注文件.xlsx";
    		File savefile =new File(filePath);
    		if (savefile.exists()) {
    			savefile.delete();
    		}
    		FileOutputStream out = new FileOutputStream(filePath);
            work.write(out);
            out.close();
      
}

上面注意下workbook你的excel是什么类型的(instr是你后端接收文件获取的流)

 public static Workbook getWorkbook(InputStream inStr,String fileName) throws Exception{  
        Workbook wb = null;  
        String fileType = fileName.substring(fileName.lastIndexOf("."));  
        if(excel2003L.equals(fileType)){  
            wb = new HSSFWorkbook(inStr);  //2003-  
        }else if(excel2007U.equals(fileType)){  
            wb = new XSSFWorkbook(inStr);  //2007+  
        }else{  
            throw new Exception("解析的文件格式有误!");  
        }  
        return wb;  
    }

简单说了下批注追加,有啥问题可以留言!

转载请注明原文链接:首页 -> 技术交流 -> JAVA开发 -> Java 利用POI进行excel文件导入时校验数据,并且追加错误批注
  • 支付宝打赏
  • 微信打赏

China.BeiJing

如果说人生是自我编写的程序,那么青春就是其中意味深长的代码