网站首页 > java教程 正文
在Excel文档中,我们可以利用数据验证来对单元格中的数据录入添加一些限制条件,比如只能录入整数、小数、日期等,也可以创建下拉菜单选项。本篇文章将使用Java代码来实现为Excel文档设置数据验证的操作,最终使得单元格只能录入符合一定条件的数据。
在运行代码前,需要搭建测试环境,除了IntelliJ IDEA和JDK外,还要用到一个名为Free Spire.XLS for Java的组件。该组件是一款免费、专业的Java组件,开发人员使用它可以在Java应用程序中轻松创建、操作、转换和打印 Excel 工作表,并且其运行环境无需安装Microsoft Office或Microsoft Excel。
添加依赖
方式 1:通过E-iceblue中文官网下载Free Spire.XLS for Java产品包,解压后将lib文件夹下的Spire.Xls.jar手动导入IDEA。
方式 2:在IDEA中创建Maven仓库,然后在pom.xml中键入以下代码即可。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>3.9.1</version>
</dependency>
</dependencies>
代码示例
import com.spire.xls.*;
public class ApplyDataValidation {
public static void main(String[] args) {
//创建Workbook对象
Workbook workbook = new Workbook();
//获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//在单元格B3中设置数字验证-仅允许输入1到100之间的数
sheet.getCellRange("B2").setText("请输入1-100之间的数:");
CellRange rangeNumber = sheet.getCellRange("B3");
rangeNumber.getDataValidation().setCompareOperator(ValidationComparisonOperator.Between);
rangeNumber.getDataValidation().setFormula1("1");
rangeNumber.getDataValidation().setFormula2("100");
rangeNumber.getDataValidation().setAllowType(CellDataType.Decimal);
rangeNumber.getDataValidation().setErrorMessage("Please input correct number!");
rangeNumber.getDataValidation().setShowError(true);
rangeNumber.getCellStyle().setKnownColor(ExcelColors.Gray25Percent);
//在单元格B6中设置日期验证-仅允许输入1/1/1970到12/31/1970之间的日期
sheet.getCellRange("B5").setText("请输入1/1/1970-12/31/1970之间的日期:");
CellRange rangeDate = sheet.getCellRange("B6");
rangeDate.getDataValidation().setAllowType(CellDataType.Date);
rangeDate.getDataValidation().setCompareOperator(ValidationComparisonOperator.Between);
rangeDate.getDataValidation().setFormula1("1/1/1970");
rangeDate.getDataValidation().setFormula2("12/31/1970");
rangeDate.getDataValidation().setErrorMessage("Please input correct date!");
rangeDate.getDataValidation().setShowError(true);
rangeDate.getDataValidation().setAlertStyle(AlertStyleType.Warning);
rangeDate.getCellStyle().setKnownColor(ExcelColors.Gray25Percent);
//在单元格B9设置字符长度验证-仅允许输入5个字符以内的文本
sheet.getCellRange("B8").setText("请输入不超过5个字符的文本:");
CellRange rangeTextLength = sheet.getCellRange("B9");
rangeTextLength.getDataValidation().setAllowType(CellDataType.TextLength);
rangeTextLength.getDataValidation().setCompareOperator(ValidationComparisonOperator.LessOrEqual);
rangeTextLength.getDataValidation().setFormula1("5");
rangeTextLength.getDataValidation().setErrorMessage("Enter a Valid String!");
rangeTextLength.getDataValidation().setShowError(true);
rangeTextLength.getDataValidation().setAlertStyle(AlertStyleType.Stop);
rangeTextLength.getCellStyle().setKnownColor(ExcelColors.Gray25Percent);
//第二列自适应宽度
sheet.autoFitColumn(2);
//保存文档
workbook.saveToFile("output/DataValidation.xlsx", ExcelVersion.Version2016);
}
}
效果示图:
猜你喜欢
- 2024-11-17 「开源资讯」MyExcel 3.3.0.GA 发布,终于支持图片导入啦
- 2024-11-17 如何优雅的用POI导入Excel文件
- 2024-11-17 EasyExcel 优雅实现 Excel 导入导出
- 2024-11-17 Spring Boot框架下实现Excel服务端导入导出
- 2024-11-17 Java 设置Excel工作表的视图模式
- 2024-11-17 使用jxl将excel行转列输出
- 2024-11-17 在Java中,如何以编程的方式设置 Excel 单元格样式
- 2024-11-17 Java 将Excel工作表中的图表转换为图片
- 2024-11-17 Java 查找、替换并高亮Excel数据
- 2024-11-17 相见恨晚,用阿里 EasyExcel 优雅实现导入导出功能
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)