在 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>15.10.5</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 天的临时许可证。
    


					



