如何在使用POI生成的Excel工作表中创建依赖下拉?

ash*_*ram 2 java excel apache-poi

我们在基于Java的Web应用程序中有一个功能,用户可以从Web应用程序下载Excel工作表模板.在此模板中填写数据,然后上传相同的Excel工作表.

然后系统读取此excel文件并将此数据保存在数据库中.

下面是模板文件的快照,其中包含一些示例数据.

我想要的是当用户下载模板文件时(模板文件通常只有标题,因此用户知道哪些数据在哪一列),excel表应该包含Division,Product,secondary product,Region和country的下拉列表.这样用户就不会在这些列中输入任何无效值.

同样,产品根据部门而有所不同,次要产品因产品而异.它更像是依赖性下降.

基本上我需要使用Apache POI创建excel表,用户将从drop dowsn中选择值而不是键入它们.

即使我们有服务器端验证,我们检查用户输入的值是否有效.

我们之所以这么做是因为有些用户可能会以美国的身份进入某个国家,有些用户可以进入美国,有些用户可能进入美国.

对于产品等也是如此.用户可以输入GFFX或GFFX Structuring或gffx等产品.

是否可以使用POI在Excel工作表中执行此操作?如果没有其他可能的解决方案,或者确保用户知道他们必须在每列中输入什么?

编辑1:

我可以创建下拉但是可以创建依赖下拉吗?

在此输入图像描述

Oli*_*and 6

我打算建议AurA的解决方案,但看起来你必须在运行时建立验证列表.

你应该看一下POI快速指南,看来它们正是你所需要的:

hssf.usermodel(二进制.xls格式)

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Data Validation");
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(new String[]{"10", "20", "30"});
DataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);
dataValidation.setSuppressDropDownArrow(false);
sheet.addValidationData(dataValidation);
Run Code Online (Sandbox Code Playgroud)

xssf.usermodel(.xlsx格式)

XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Data Validation");
XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint)
dvHelper.createExplicitListConstraint(new String[]{"11", "21", "31"});
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
XSSFDataValidation validation = (XSSFDataValidation)dvHelper.createValidation(
dvConstraint, addressList);
validation.setShowErrorBox(true);
sheet.addValidationData(validation);
Run Code Online (Sandbox Code Playgroud)