在本文中,将学习如何将各种数据验证应用于 Excel 单元格.
微信搜索关注《Java学研大本营》,加入读者群,分享更多精彩
Excel 中的数据验证功能允许限制或应该在特定单元格中输入哪些数据。例如,通过 Excel 收集用户对产品的满意度指数时,可能输入 1-10 之间的任意数字。
在本文中,将学习如何将各种数据验证 (包括数字验证 、文本长度验证、日期验证、时间验证和列表验证 )应用于 Excel 单元格,以及如何通过以下方式使用 Spire.XLS删除指定单元格。
添加 Spire.Xls jar
如果正在处理 maven 项目,则可以使用以下命令在 pom.xml 文件中:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>12.8.4</version>
</dependency>
</dependencies>
如果没有使用 maven,那么可以从这个位置(https://www.e-iceblue.com/Download/xls-for-java.html)。将所有 jar 文件包含到应用程序 lib 文件夹中,以运行本教程中给出的示例代码。
将数据验证应用于 Excel 单元格
以下是使用 Spire.XLS for Java 向单元格添加各种类型的数据验证的步骤。
-
创建 Workbook 对象
-
使用 Workbook.getWorksheets().get() 方法获取第一个工作表
-
使用Worksheet.getCellRange() 获取特定单元格区域以添加数据验证。
-
使用CellRange.getDataValidation().setAllowType() 方法设置单元格中允许的数据类型,可以选择数据类型为整数、时间、日期、文本长度、小数等。
-
使用CellRange.getDataValiation().setCompareOperator() 方法设置比较运算符,比较运算符包括Between、NotBetween、Less、Greater、Equal等。
-
使用CellRange.getDataValidation().setFormula1() 和 CellRange.getDataValidation().setFormula2() 方法为数据验证设置一个或两个公式
-
使用CellRange.getDataValidation().setInputMessage() 方法设置输入提示.
-
使用Workbook.saveToFile() 方法将工作簿保存到 Excel 文件
import com.spire.xls.*;
public class ApplyDataValidation {
public static void main(String[] args) {
//Create a Workbook object
Workbook workbook = new Workbook();
//Get the first worksheet
Worksheet sheet = workbook.getWorksheets().get(0);
//Insert text in cells
sheet.getCellRange("B2").setText("Input a number:");
sheet.getCellRange("B4").setText("Input a date:");
sheet.getCellRange("B6").setText("Input text:");
sheet.getCellRange("B8").setText("Select an item from the list:");
sheet.getCellRange("B10").setText("Input a time:");
//Add a number validation to C2
CellRange rangeNumber = sheet.getCellRange("C2");
rangeNumber.getDataValidation().setAllowType(CellDataType.Integer);
rangeNumber.getDataValidation().setCompareOperator(ValidationComparisonOperator.Between);
rangeNumber.getDataValidation().setFormula1("1");
rangeNumber.getDataValidation().setFormula2("10");
rangeNumber.getDataValidation().setInputMessage("Enter a number between 1 and 10");
rangeNumber.getStyle().setKnownColor(ExcelColors.BlueGray);
//Add a date validation to C4
CellRange rangeDate = sheet.getCellRange("C4");
rangeDate.getDataValidation().setAllowType(CellDataType.Date);
rangeDate.getDataValidation().setCompareOperator(ValidationComparisonOperator.Between);
rangeDate.getDataValidation().setFormula1("1/1/2010");
rangeDate.getDataValidation().setFormula2("12/31/2020");
rangeDate.getDataValidation().setInputMessage("Enter a date between 1/1/2010 and 12/31/2020");
rangeDate.getStyle().setKnownColor(ExcelColors.BlueGray);
//Add a text length validation to C6
CellRange rangeTextLength = sheet.getCellRange("C6");
rangeTextLength.getDataValidation().setAllowType(CellDataType.TextLength);
rangeTextLength.getDataValidation().setCompareOperator(ValidationComparisonOperator.LessOrEqual);
rangeTextLength.getDataValidation().setFormula1("5");
rangeTextLength.getDataValidation().setInputMessage("Enter text lesser than 5 characters");
rangeTextLength.getStyle().setKnownColor(ExcelColors.BlueGray);
//Apply a list validation to C8
CellRange rangeList = sheet.getCellRange("C8");
rangeList.getDataValidation().setValues(new String[] { "United States", "Canada", "United Kingdom", "Germany" }) ;
rangeList.getDataValidation().isSuppressDropDownArrow(false);
rangeList.getDataValidation().setInputMessage("Choose an item from the list");
rangeList.getStyle().setKnownColor(ExcelColors.BlueGray);
//Apply a time validation to C10
CellRange rangeTime = sheet.getCellRange("C10");
rangeTime.getDataValidation().setAllowType(CellDataType.Time);
rangeTime.getDataValidation().setCompareOperator(ValidationComparisonOperator.Between);
rangeTime.getDataValidation().setFormula1("9:00");
rangeTime.getDataValidation().setFormula2("12:00");
rangeTime.getDataValidation().setInputMessage("Enter a time between 9:00 and 12:00");
rangeTime.getStyle().setKnownColor(ExcelColors.BlueGray);
//Auto fit width of column 2
sheet.autoFitColumn(2);
//Set the width of column 3
sheet.getColumns()[2].setColumnWidth(20);
//Save to file
workbook.saveToFile("ApplyDataValidation.xlsx", ExcelVersion.Version2016);
}
}
输出
从 Excel 单元格中删除数据验证
以下是使用 Spire.XLS for Java 从指定单元格中删除数据验证的步骤。
-
创建一个Workbook 对象。
-
使用Workbook.loadFromFile()方法加载包含数据验证的 Excel 文件
-
使用Workbook.getWorksheets().get() 方法获取第一个工作表
-
创建一个矩形数组,用于定位将删除验证的单元格。
-
使用Worksheet.getDVTable().remove() 方法从所选单元格中删除数据验证
-
使用Workbook.saveToFile() 方法将工作簿保存到另一个 Excel 文件
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import java.awt.*;
public class RemoveDataValidation {
public static void main(String[] args) {
//Create a Workbook object
Workbook workbook = new Workbook();
//Load a sample Excel file
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\ApplyDataValidation.xlsx");
//Get the first worksheet
Worksheet worksheet = workbook.getWorksheets().get(0);
//Create an array of rectangles, which is used to locate the ranges in worksheet.
Rectangle[] rectangles = new Rectangle[]{
//One Rectangle(columnIndex, rowIndex) specifies a specific cell,the column or row index starts at 0
//To specify a cell range, use Rectangle(startColumnIndex, startRowIndex, endColumnIndex, endRowIndex)
new Rectangle(2,1),
new Rectangle(2,3),
new Rectangle(2,5),
new Rectangle(2,7),
new Rectangle(2,9)
};
//Remove the data validation from the selected cells
worksheet.getDVTable().remove(rectangles);
//Save the workbook to an Excel file
workbook.saveToFile("RemoveDataValidation.xlsx");
}
}
输出
推荐书单
1.《项目驱动零起点学Java》
购买链接:https://u.jd.com/XwJWF2r
《项目驱动零起点学Java》贯穿6个完整项目,经过作者多年教学经验提炼而得,项目从小到大、从短到长,可以让读者在练习项目的过程中,快速掌握一系列知识点。
作者是国内知名Java教学者和传播者,一路披荆斩棘,兢兢业业20余年。积累了丰富的“培”“训”经验,也产出了很多优质的教学理论。
Java语言经过数十年的发展,体系逐渐变得庞大而复杂,本书芟繁就简,提炼出了最为重要的知识点,可以让读者轻松上手。本书配套有专栏课程,课程中提供了扩展内容。
《项目驱动零起点学Java》共分 13 章,围绕 6 个项目和 258 个代码示例,分别介绍了走进Java 的世界、变量与数据类型、运算符、流程控制、方法、数组、面向对象、异常、常用类、集合、I/O流、多线程、网络编程相关内容。《项目驱动零起点学Java》总结了马士兵老师从事Java培训十余年来经受了市场检验的教研成果,通过6 个项目以及每章的示例和习题,可以帮助读者快速掌握Java 编程的语法以及算法实现。扫描每章提供的二维码可观看相应章节内容的视频讲解。
精彩回顾
微信搜索关注《Java学研大本营》
访问【IT今日热榜】,发现每日技术热点