如何在 Excel 中应用或删除数据验证

在本文中,将学习如何将各种数据验证应用于 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 编程的语法以及算法实现。扫描每章提供的二维码可观看相应章节内容的视频讲解。

精彩回顾

想要代码干净又整洁?这里有十大原则

通过自学成为开发者的 9 种方法

怎么做一个有产品意识的软件工程师?

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值