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-4o 教程

MidJourney教程

Poe教程

Fantia教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值