poi关于为excle文件添加批注被覆盖问题

POI 批注添加 注意事项

在使用POI上传Excel时,对上传的Excel内容进行校验时,错误信息背景加红,并且加批注
/**
* 功能:对校验的excel表的出错的地方背景变红,并且添加备注
* @param hssfWorkbook
* @param sheet所操作的excel表
* @param cell所校验的单元格
* @param msg准备添加的批注信息
* @param r 当前所操作的行
* @param allrow 是这个sheet表一共有几行
* @param 保存路径
*/
private void addAnnotateForExcel(HSSFWorkbook hssfWorkbook,HSSFSheet sheet,HSSFCell cell,HSSFPatriarch p,String msg,String savePath,int r,int allrow){
//为单元格添加批注
HSSFComment comment=
p.createComment(newHSSFClientAnchor(0,0,0,0,(short)3,3,(short)5,6));
comment.setString(new HSSFRichTextString(msg));
cell.setCellComment(comment);
//设置背景颜色
HSSFCellStyle style=hssfWorkbook.createCellStyle();
style.setFillPattern(HSSFCellStyle.FINE_DOTS );
//设置前景色
style.setFillForegroundColor(new HSSFColor.RED().getIndex());
//设置背景色
style.setFillBackgroundColor(new HSSFColor.RED().getIndex());
//给单元格添加风格
cell.setCellStyle(style);
if (r==(allrow-1)) {
FileOutputStream stream =null;
try {
stream = new FileOutputStream(savePath);
hssfWorkbook.write(stream);
} catch (Exception e) {
e.printStackTrace();
}finally{
if (stream!=null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}}}}
}

注:
1.一张sheet表,只能创建一个绘画对象HSSFPatriarch,如果一张表创建多个绘画对象HSSFPatriarch,在添加批注时,会出现错误,会导致只有最后一行添加了批注
2. HSSFWorkbook 这种创建的工作表,只能对第一张工作表操作
3.在输出过程中,不能添加一次输出一次,必须要等到对最后一行数据校验完毕后才能输出,否则会覆盖点之前的批注或者只能在第一个上添加批注
4,前景色和背景色要配合着使用,否则无法实现背景加色的效果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值