记录一次 使用easyexcel设置数据有效性

记录一次 使用easyexcel设置数据有效性 做个备忘
gitee 下载easyexcel
easyexcel
纯纯的拉取之后代码 只是在自定义拦截器添加几行代码
WriteTest.java

    /**
     * 下拉,超链接等自定义拦截器(上面几点都不符合但是要对单元格进行操作的参照这个)
     * <p>
     * demo这里实现2点。1. 对第一行第一列的头超链接到:https://github.com/alibaba/easyexcel 2. 对第一列第一行和第二行的数据新增下拉框,显示 测试1 测试2
     * <p>
     * 1. 创建excel对应的实体对象 参照{@link DemoData}
     * <p>
     * 2. 注册拦截器 {@link CustomCellWriteHandler} {@link CustomSheetWriteHandler}
     * <p>
     * 2. 直接写即可
     */
    @Test
    public void customHandlerWrite() {
        String fileName = TestFileUtil.getPath() + "customHandlerWrite" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        EasyExcel.write(fileName, DemoData.class).registerWriteHandler(new CustomSheetWriteHandler())
            .registerWriteHandler(new CustomCellWriteHandler()).sheet("模板").doWrite(data());
    }

下面是自定义拦截器


/**
 * 自定义拦截器.对第一列第一行和第二行的数据新增下拉框,显示 测试1 测试2
 *
 * @author Jiaju Zhuang
 */
@Slf4j
public class CustomSheetWriteHandler implements SheetWriteHandler {

    @Override
    public void afterSheetCreate(SheetWriteHandlerContext context) {
        log.info("第{}个Sheet写入成功。", context.getWriteSheetHolder().getSheetNo());

        // 区间设置 第一列第一行和第二行的数据。由于第一行是头,所以第一、二行的数据实际上是第二三行
        CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(1, 10, 2, 2);
        DataValidationHelper helper = context.getWriteSheetHolder().getSheet().getDataValidationHelper();
//        DataValidationConstraint constraint = helper.createExplicitListConstraint(new String[] {"测试1", "测试2"});
/**
*只在这里做了改动 创建数字约束
helper.createNumericConstraint(p1,p2,p3,p4)
p1:验证类型 ANY(任意类型)、INTEGER、DECIMAL...
p2:符类型(大于、小于、不等于、区间...) 
p3:@param expr1日期公式(当第一个字符为'='时)或格式化数字值
p4:@param expr2日期公式(当第一个字符为'='时)或格式化数字值
*/
       DataValidationConstraint numericConstraint =
           helper.createNumericConstraint(
               DataValidationConstraint.ValidationType.DECIMAL,
               DataValidationConstraint.OperatorType.BETWEEN,
               "1",
               "100");
             //对单元格数据进行验证
        DataValidation dataValidation = helper.createValidation(numericConstraint, cellRangeAddressList);
        //创建提示框 这里创建的是错误提示框
        dataValidation.createErrorBox("类型有误","请填写1-100之间的数据");
        dataValidation.setShowErrorBox(true);
        context.getWriteSheetHolder().getSheet().addValidationData(dataValidation);
    }
}

效果:
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用EasyExcel导出数据的步骤如下: 1. 首先,确保已经将EasyExcel的依赖添加到项目中。可以在项目的pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.11</version> </dependency> ``` 2. 创建一个实体类来表示导出的数据。这个实体类中的字段将对应Excel表格中的列。 3. 在代码中,使用EasyExcel提供的API来进行数据导出。首先,创建一个`ExcelWriter`对象,指定导出的文件路径和文件名。然后,使用`Sheet`和`Row`对象来指定要导出的数据所在的Sheet和行。接下来,通过设置每个单元格的值,将数据写入到Excel表格中。最后,调用`finish`方法来完成导出操作。 下面是一个示例代码,演示了如何使用EasyExcel导出数据: ```java // 1. 创建导出的数据实体类 public class User { private String name; private int age; // 其他字段... // 省略构造方法、getter和setter } // 2. 导出数据 public void exportData() { // 2.1 创建ExcelWriter对象 String fileName = "导出文件.xlsx"; ExcelWriter excelWriter = EasyExcel.write(fileName).build(); // 2.2 创建Sheet对象 Sheet sheet = new Sheet(1, 0, User.class); sheet.setSheetName("用户数据"); // 2.3 查询数据库或准备数据列表 List<User> userList = userService.getUserList(); // 2.4 写入数据到Excel表格中 excelWriter.write(userList, sheet); // 2.5 完成导出操作 excelWriter.finish(); } ``` 这样,使用EasyExcel就可以轻松地将数据导出到Excel表格中了。通过设置`User`类中的字段,可以控制导出表格的列名和数据内容。 请注意,上述示例代码中的`userService.getUserList()`是一个示例方法,用于获取要导出的数据列表。具体的获取数据的方式可能因项目而异。 参考资料:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值