Java 使用 POI 导出Excel,实现单元格内容为下拉选项

在使用Apache POI的库生成Excel导入模板的时候,有时候需要设置某些列只能选择下拉选项中的内容,该如何实现这个特性呢?下面是一个示例代码,演示如何实现单元格只能从下拉中选择内容。

代码

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelDropDownDemo {
  public static void main(String[] args) {
    // 创建一个新的工作簿
    Workbook workbook = new XSSFWorkbook();

    // 创建一个新的工作表
    Sheet sheet = workbook.createSheet("Sheet1");

    // 设置单元格只能选择下拉内容
    // 创建下拉列表的内容
    String[] dropDownList = {"Option 1", "Option 2", "Option 3"};

    // 将下拉列表的内容设置到单元格中
    DataValidationHelper validationHelper = sheet.getDataValidationHelper();
    DataValidationConstraint constraint = validationHelper.createExplicitListConstraint(dropDownList);

    // 设置数据验证的单元格范围
    CellRangeAddressList addressList = new CellRangeAddressList(0, 1000, 0, 0);
    DataValidation dataValidation = validationHelper.createValidation(constraint, addressList);

    // 禁止输入非下拉列表中的内容
    dataValidation.setShowErrorBox(true);

    // 将数据验证添加到工作表中
    sheet.addValidationData(dataValidation);

    try (FileOutputStream fileOut = new FileOutputStream("DropDownExample.xlsx")) {
      // 将工作簿写入文件输出流
      workbook.write(fileOut);
    } catch (IOException e) {
      e.printStackTrace();
    }

    // 关闭工作簿
    try {
      workbook.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

这个示例代码将创建一个名为output.xlsx的Excel文件,并在该文件中演示如何添加一个只能选择下拉列表内容的单元格。

主要步骤:

  1. 创建下拉列表的内容:定义一个字符串数组dropDownList,其中包含下拉列表的选项。
  2. 设置数据验证的单元格范围:使用CellRangeAddressList指定要应用数据验证的单元格范围。
  3. 创建数据验证:使用DataValidationHelperDataValidationConstraint创建一个数据验证,并将其应用于指定的单元格范围。
  4. 添加数据验证:将数据验证添加到工作表中,并设置为显示错误框,以确保用户只能选择下拉列表中的内容。

这样就实现了在Excel文件中设置单元格只能选择下拉列表中的内容的功能。

效果图

image-20240728182121370

其他

另外,对以下内容感兴趣的同学请移步对应教程:

五分钟拥有自己的GPT

ChatGPT-4o教程

Onlyfans-注册以及充值、订阅教程

【一看就会】五分钟完成MidJourney订阅

Poe会员开通教程

【新手必读】2024最新Fantia注册与支付指南

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中,可以使用 Apache POI 库来导出 Excel。要实现列表的模糊查询,可以在 Excel 中设置数据验证规则,然后在 Java 代码中设置该规则。 具体步骤如下: 1. 在 Excel 中创建一个下列表,并设置数据验证规则。例如,在单元 A1 中创建下列表,列表选项为 "apple"、"banana"、"cherry"、"date"、"elderberry"。设置数据验证规则时,选择 "列表" 类型,并将列表选项设置为 "=A2:A6",其中 A2:A6 包含了所有选项。 2. 在 Java使用 Apache POI 库创建 Excel,并将下列表应用于单元 A1,如下所示: ``` Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); Row row = sheet.createRow(0); Cell cell = row.createCell(0); // 创建下列表选项 String[] options = {"apple", "banana", "cherry", "date", "elderberry"}; DataValidationHelper validationHelper = sheet.getDataValidationHelper(); CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0); DataValidationConstraint constraint = validationHelper.createFormulaListConstraint("Sheet1!$A$2:$A$6"); DataValidation dataValidation = validationHelper.createValidation(constraint, addressList); // 应用下列表到单元 sheet.addValidationData(dataValidation); cell.setCellValue("a"); // 设置单元初始值 ``` 在上面的代码中,首先创建了一个包含下列表选项的数组 options,然后使用 DataValidationHelper 创建了一个数据验证规则 constraint,并将其应用于单元 A1。 3. 在 Java使用 Apache POI 库设置单元的自动筛选,然后使用 AutoFilter 进行模糊查询,如下所示: ``` sheet.setAutoFilter(CellRangeAddress.valueOf("A1:A1")); // 设置单元自动筛选 FilterColumn filterColumn = sheet.getAutoFilter().getColumnFilter(0); filterColumn.setFilterType(FilterType.CUSTOM); // 进行模糊查询 CustomFilter customFilter = new CustomFilter(); customFilter.setCriteria("=*a*"); // 模糊查询字符串以 "a" 结尾的项 filterColumn.setCustomFilter(customFilter); ``` 在上面的代码中,首先使用 setAutoFilter 方法设置单元的自动筛选,然后使用 getAutoFilter 方法获取单元的 AutoFilter 对象,并使用 getColumnFilter 方法获取第一列的 FilterColumn 对象。 接下来,设置 FilterType 为 CUSTOM,并创建 CustomFilter 对象进行模糊查询。在上面的示例中,设置了查询字符串为 "=*a*",表示查询字符串以 "a" 结尾的项。 最后,使用 setCustomFilter 方法将自定义过滤器应用于 FilterColumn 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值