使用easyexcel做数据校验错误返回excel表格批注+背景

news/2024/11/24 11:13:17/

使用easyexcel做数据校验错误返回excel表格批注+背景

效果入这样
在这里插入图片描述
想要实现,每行错误单元格,写入错误批注还是很难得,因为easyexcel在2.2.0.bate1 版本才支持写入批注. 所有还没研究能不能实现.
现在按照模板只能实现了单个(又研究了下是可以批量的)

package com.alibaba.easyexcel.test.demo.write;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Comment;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import com.alibaba.excel.write.handler.AbstractRowWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
/**
采用的是官方文档demo更改而成* 自定义拦截器.新增注释,第一行头加批注** @author Mr chen*/
public class CommentWriteHandler extends AbstractRowWriteHandler {@Overridepublic void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,Integer relativeRowIndex, Boolean isHead) {//如果false 就读取行数据. 如果为true只能批注头.不能对每行进行批注if (!isHead) {Sheet sheet = writeSheetHolder.getSheet();//循环是设置批量批示的for (int i = 0; i < 2; i++) {Workbook workbook = sheet.getWorkbook();//只能创建实例才能对单元格进行操作.阿里暂时不支持CellStyle cellStyle = workbook.createCellStyle();//设置前景填充样式cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);//设置前景色为红色cellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());//设置垂直居中cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);Drawing<?> drawingPatriarch = sheet.createDrawingPatriarch();// 在第一行 第二列创建一个批注Comment comment =drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, (short)3, 3, (short)5, 6));// 输入批注信息comment.setString(new XSSFRichTextString("创建批注1!"));// 将批注添加到单元格对象中sheet.getRow(relativeRowIndex+1).getCell(i).setCellComment(comment);sheet.getRow(relativeRowIndex+1).getCell(i).setCellStyle(cellStyle);}}}
}

设置成这样子
在这里插入图片描述
可以根据业务来对每行数据进行校验 返回错误批注 (根据业务来处理)
后续会继续完善整套的代码.思路先搞通在说

下面是对单元格的样式 保存下以后可查看方便
CellStyle cellStyle = workbook.createCellStyle();
// 下边框
cellStyle.setBorderBottom(BorderStyle.THIN);
// 左边框
cellStyle.setBorderLeft(BorderStyle.THIN);
// 上边框
cellStyle.setBorderTop(BorderStyle.THIN);
// 右边框
cellStyle.setBorderRight(BorderStyle.THIN);
// 水平对齐方式
cellStyle.setAlignment(HorizontalAlignment.CENTER);
//cellStyle.setFillForegroundColor(IndexedColors.BLUE.getIndex());
// 垂直对齐方式
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);


http://www.ppmy.cn/news/466146.html

相关文章

导入Excel时校验内容并将错误的单元格标红,生成标记错误的excel提供给用户下载

一、背景 最近有一个需求是通过excel导入数据&#xff0c;然后经过校验&#xff0c;将错误的数据所在的单元格标红&#xff0c;然后生成一个新的标记错误的excel提供给用户下载。 二、技术选型 阿里推出的EasyExcel 链接地址&#xff1a;https://easyexcel.opensource.aliba…

easypoi利用模板导出图片到Excel;解决easypoi导出图片到合并单元格单元格被拉伸的问题

easypoi的封装是非常好的&#xff0c;用起来很简单。 官方教程地址&#xff1a;http://easypoi.mydoc.io/ 但是在使用模板导出图片到合并单元格时出问题了&#xff0c;官网找了好几遍没找到方案。 其实官方早就实现了只是没有直接的文档说明。解决办法&#xff1a; 走起&am…

关于使用XLSTransformer.transformXLS导出Excel表格中遇到的问题

1. 需求&#xff1a;最近拿到的一个任务&#xff0c;是将订单列表导出&#xff0c;按照订单列表导出&#xff08;包括筛选条件&#xff09;。 背景&#xff1a;由于原本的订单列表查询代码太过繁重&#xff0c;里面夹杂的逻辑较多&#xff0c;再有一个是自己想尽快的熟悉公司…

excel粘贴 粘贴值 使用VBA宏匹配目标格式

当您按下键盘上的Ctrl V键时&#xff0c;也可以使用VBA宏始终默认设置黏贴模式为匹配目标格式。只需执行以下步骤&#xff1a; 步骤1&#xff1a;打开您的Excel工作簿&#xff0c;然后单击开发工具选项卡下的“Visual Basic”命令&#xff0c;或者只需按“ALT F11”快捷方式…

POI 操作Excel的单元格样式超过64000的异常问题解决

文章目录 POI 操作Excel的单元格样式超过64000的异常问题解决问题描述问题原因问题分析和解决简单的Excel文件生成Demo 最终的解决方案 POI 操作Excel的单元格样式超过64000的异常问题解决 问题描述 在用POI 生成Excel文件时&#xff0c;如果自定义的单元格的样式超过64000行…

python excel单元格 剪切清除粘贴复制_Excel复制粘贴时弹出“不能清除剪贴板”的解决方法...

2、单击“开始”&#xff0c;“运行”&#xff0c;键入 “clipbrd”命令&#xff0c;启动“剪贴薄查看器”。单击“编辑—删除”命令即可。 不知道是不是正确 我是这么解决的 3、拖动复制单元格时&#xff0c;老提示&#xff1a;无法清空剪贴板&#xff0c;另一程序可能仍在使用…

使用easyexcel做数据校验错误导出excel表格批注+背景(1.0) 继续优化升级

最终效果: 这次对文件进行了进一步的提升,优化, 这次是批量数据校验判断,只判断了是否为空,空就作批注加背景.如下: 这模拟数据.还需要更多的实验才能优化 待优化点: 待升级 动态获取获取head头 待处理 对没一列进行数据校验,因为目前只做了""处理 待优化批注提示语…

excel表格公式无效、不生效的解决方案及常见问题、常用函数

1、表格公式无效、不生效 使用公式时碰到了一个问题&#xff0c;那就是公式明明已经编辑好了&#xff0c;但是在单元格里不生效&#xff0c;直接把公式显示出来了&#xff0c;网上资料说有4种原因&#xff0c;但是我4种都不是&#xff0c;是第5种原因&#xff0c;如下图&#x…