在 Excel 文档中,下拉框扮演着重要的角色。它们提供了一种便捷的方式来限制用户输入的选项,减少错误和提高数据的准确性。通过下拉框,用户可以从预定义的选项中进行选择,避免输入错误或不一致的数据。此外,下拉框还可以提升文档的可读性和易用性,使用户操作更加流畅和高效。在数据输入和分析过程中,下拉框可以帮助用户快速选择所需信息,节省时间并降低操作的复杂性。本文将介绍如何使用 Spire.XLS for Java 在 Java 项目中给 Excel 文档创建下拉框。
- Java 使用字符串数组创建下拉框
- Java 利用同一工作表的数据创建下拉框
- Java 利用不同工作表的数据创建下拉框
- Java 在同一个工作表中创建联动的下拉框
- Java 在不同的工作表之间创建联动的下拉框
安装 Spire.XLS for Java
首先,您需要在 Java 程序中添加 Spire.XLS for Java 文件作为依赖项。JAR 文件可以从此链接下载。 如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>14.12.0</version>
</dependency>
</dependencies>
Java 使用字符串数组创建下拉框
通过使用 Spire.XLS,将字符串数组赋值给 CellRange.getDataValidation().setValues() 属性,可以很容易地在单元格中创建下拉框。以下是详细的步骤:
- 创建一个 Workbook 对象。
- 使用 Workbook.getWorksheets().get(0) 获取工作簿中的第一个工作表。
- 创建一个字符串数组,将它赋值给 CellRange.getDataValidation().setValues() 方法。
- 通过 Workbook.saveToFile() 方法保存文档到指定路径。
- Java
import com.spire.xls.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个Workbook对象
Workbook workbook = new Workbook();
// 获取Workbook对象中的第一个Worksheet
Worksheet worksheet = workbook.getWorksheets().get(0);
// 创建一个字符串数组
String[] values = new String[] { "山东省", "四川省", "河南省", "湖北省", "湖南省" };
// 在工作表的A1单元格设置数据验证,限制可选值为values数组中的值
worksheet.getCellRange("A1").getDataValidation().setValues(values);
// 将Workbook对象保存为Excel文件
workbook.saveToFile("使用数组创建下拉框.xlsx", ExcelVersion.Version2016);
// 释放Workbook对象占用的资源
workbook.dispose();
}
}
Java 利用同一工作表的数据创建下拉框
这个示例展示了如何在数据所在工作表中创建下拉框,需要指定一个数据范围并将其应用于要创建下拉框的单元格即可。以下是详细的步骤:
- 创建一个 Workbook 对象。
- 通过 Workbook.loadFromFile() 方法加载一个 Excel 文档。
- 使用 Workbook.getWorksheets().get(0) 获取工作簿中的第一个工作表.
- 使用 Worksheet.getCellRang()方法 获取数据范围。
- 使用 CellRange.getDataValidation().setDataRange() 方法指定一个单元格为下拉框并设置数据范围。
- 通过 Workbook.saveToFile() 方法保存文档到指定路径。
- Java
import com.spire.xls.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个新的工作簿对象
Workbook workbook = new Workbook();
// 从文件加载工作簿数据
workbook.loadFromFile("示例1.xlsx");
// 获取工作簿中的第一个工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 获取工作表中A3到A8单元格范围
CellRange dataRange = worksheet.getCellRange("A3:A8");
// 将B1单元格设置为下拉框,数据范围为之前获取的范围
worksheet.getCellRange("B1").getDataValidation().setDataRange(dataRange);
// 将工作簿保存到新文件中
workbook.saveToFile("在同一工作表中创建下拉框.xlsx", ExcelVersion.Version2016);
// 释放工作簿资源
workbook.dispose();
}
}
Java 利用不同工作表的数据创建下拉框
这个示例演示了如何在一个工作表中定义数据范围,并将其应用到另一个工作表的特定单元格。要实现在不同工作表中创建下拉框,需要确保设置 Worksheet.ParentWorkbook.Allow3DRangesInDataValidation = true。以下是详细的步骤:
- 创建一个 Workbook 对象。
- 通过 Workbook.loadFromFile() 方法加载一个 Excel 文档。
- 使用 Workbook.getWorksheets().get() 方法获取工作簿中的一个工作表。
- 设置 Worksheet.getParentWorkbook().setAllow3DRangesInDataValidation(true),在工作表中启用使用3D范围的数据验证功能。
- 使用 CellRange.getDataValidation().setDataRange() 方法指定单元格为下拉框并设置数据范围。
- 通过 Workbook.saveToFile() 方法保存文档到指定路径。
- Java
import com.spire.xls.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个Workbook对象
Workbook workbook = new Workbook();
// 从文件加载工作簿
workbook.loadFromFile("示例2.xlsx");
// 获取第一个工作表
Worksheet worksheet1 = workbook.getWorksheets().get(0);
// 获取第二个工作表
Worksheet worksheet2 = workbook.getWorksheets().get(1);
// 允许在数据验证中使用3D范围
worksheet1.getParentWorkbook().setAllow3DRangesInDataValidation(true);
// 定义数据范围
CellRange dataRange = worksheet2.getCellRange("A1:A6");
// 将数据范围应用到工作表1的B1单元格作为数据验证
worksheet1.getCellRange("B1").getDataValidation().setDataRange(dataRange);
// 保存工作簿到文件
workbook.saveToFile("在不同的工作表中创建下拉框.xlsx", ExcelVersion.Version2016);
// 释放工作簿资源
workbook.dispose();
}
}
Java 在同一个工作表中创建联动的下拉框
联动下拉菜单是指根据一个选项的选择,自动调整另一个下拉菜单的内容。这个示例展示了如何在同一个工作表中实现这种联动效果。实现的方式是通过添加 INameRange 对象并设定引用范围,以及设置数据验证的数据范围和公式来实现下拉菜单之间的关联。以下是详细的步骤:
- 创建一个 Workbook 对象。
- 通过 Workbook.loadFromFile() 方法加载一个 Excel 文档。
- 使用 Workbook.getWorksheets().get() 获取工作簿中的一个工作表。
- 添加 INamedRange 对象并设置引用范围。
- 设置 Worksheet.getParentWorkbook().setAllow3DRangesInDataValidation(true) ,在工作表中启用使用3D范围的数据验证功能。
- 使用 CellRange.getDataValidation().setDataRange() 指定单元格为下拉框并设置数据范围。
- 设置 CellRange.getDataValidation().setAllowType(CellDataType.User),指定工作表中单元格的数据验证类型为用户自定义。
- 设置 CellRange.getDataValidation().setFormula1("=INDIRECT($A$2)"),使该单元格的数据验证将根据单元格中的值来动态选择数据范围。
- 通过 Workbook.saveToFile() 方法保存文档到指定路径。
- Java
import com.spire.xls.*;
import com.spire.xls.core.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个新的工作簿对象
Workbook workbook = new Workbook();
// 从文件加载工作簿
workbook.loadFromFile("示例3.xlsx");
// 获取第一个工作表
Worksheet worksheet1 = workbook.getWorksheets().get(0);
// 获取第二个工作表
Worksheet worksheet2 = workbook.getWorksheets().get(1);
// 添加命名范围对象并设置引用范围
INamedRange namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A1").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("B2:B7"));
namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A2").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("C2:C7"));
namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A3").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("D2:D7"));
namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A4").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("E2:E7"));
namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A5").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("F2:F7"));
// 允许数据验证中的3D范围
worksheet1.getParentWorkbook().setAllow3DRangesInDataValidation(true);
// 设置数据验证的数据范围
worksheet1.getCellRange("A2").getDataValidation().setDataRange(worksheet2.getCellRange("A1:A5"));
worksheet1.getCellRange("B2").getDataValidation().setAllowType(CellDataType.User);
// 设置公式为INDIRECT($A$2)
worksheet1.getCellRange("B2").getDataValidation().setFormula1("=INDIRECT($A$2)");
// 将工作簿保存到文件
workbook.saveToFile("在同一个工作表中创建联动的下拉框.xlsx", ExcelVersion.Version2016);
// 释放工作簿资源
workbook.dispose();
}
}
Java 在不同的工作表之间创建联动的下拉框
这个示例演示了如何在 Excel 文档中实现不同工作表之间的联动下拉框功能。通过添加 INameRange 对象并设定引用范围,在第一个工作表中设置数据验证的数据范围,在第二个工作表中设置单元格的公式来实现下拉框的联动效果。以下是详细的步骤:
- 创建一个 Workbook 对象。
- 通过 Workbook.loadFromFile() 方法加载一个 Excel 文档。
- 使用 Workbook.getWorksheets().get() 获取工作簿中的一个工作表。
- 添加 INamedRange 对象并设置引用范围。
- 设置 Worksheet.getParentWorkbook().setAllow3DRangesInDataValidation(true),在工作表中启用使用3D范围的数据验证功能。
- 使用 CellRange.getDataValidation().setDataRange() 设置数据验证的数据范围。
- 在第二个工作表的单元格中设置CellRange.setFormula("=INDIRECT("+worksheet1.getName() +"!B1)") 公式为间接引用第一个工作表中的单元格的值。
- 通过 Workbook.saveToFile() 方法保存文档到指定路径。
- Java
import com.spire.xls.*;
import com.spire.xls.core.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个Workbook对象
Workbook workbook = new Workbook();
// 从文件加载工作簿
workbook.loadFromFile("示例4.xlsx");
// 获取第一个工作表
Worksheet worksheet1 = workbook.getWorksheets().get(0);
// 获取第二个工作表
Worksheet worksheet2 = workbook.getWorksheets().get(1);
// 获取数据工作表
Worksheet dataSheet = workbook.getWorksheets().get(2);
// 添加命名范围对象并设置引用范围
INamedRange namedRange = workbook.getNameRanges().add(dataSheet.getCellRange("A2").getText());
namedRange.setRefersToRange(dataSheet.getCellRange("B2"));
namedRange = workbook.getNameRanges().add(dataSheet.getCellRange("A3").getText());
namedRange.setRefersToRange(dataSheet.getCellRange("B3"));
namedRange = workbook.getNameRanges().add(dataSheet.getCellRange("A4").getText());
namedRange.setRefersToRange(dataSheet.getCellRange("B4"));
// 允许数据验证中的3D范围
worksheet1.getParentWorkbook().setAllow3DRangesInDataValidation(true);
// 设置数据验证的数据范围
worksheet1.getCellRange("B1").getDataValidation().setDataRange(dataSheet.getCellRange("A2:A4"));
// 设置第二个工作表的B1单元格的公式
worksheet2.getCellRange("B1").setFormula("=INDIRECT("+worksheet1.getName() +"!B1)");
// 将工作簿保存到文件
workbook.saveToFile("在不同的工作表中创建联动的下拉框.xlsx", ExcelVersion.Version2016);
// 释放工作簿资源
workbook.dispose();
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。