如何在使用兴趣点生成的Excel表格中创build相关的下拉菜单?

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

然后系统读取这个excel文件并将这些数据保存在数据库中。

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

我想要的是当用户下载模板文件(模板文件通常只有标题,所以用户知道哪个数据在哪一列),excel表格对于分区,产品,次级产品,地区和国家都应该有下拉。 这样用户不会在这些列中input任何无效的值。

同样,产品因部门而异,二次产品因产品而异。 它更像是依赖下拉。

基本上我需要使用Apache POI来创buildExcel表格,在这个表格中,用户可以从下拉列表中select数值,而不是inputthemselevs。

即使我们有服务器端validation,我们检查用户input的值是否有效。

我们这样做的原因是,例如一些用户可能会进入美国,一些像美国,一些像美国。

用户也可以input产品为GFFX或GFFX Structuring或gffx等。

在使用兴趣点的Excel表格中可以这样做吗? 如果不是,其他可能的解决scheme是什么,或者确保用户知道他们必须在每一栏中input什么?

编辑1:

我可以创build下拉菜单,但可以创build相关的下拉菜单吗?

在这里输入图像说明

我正要提出AurA的解决scheme,但看起来你必须在运行时确实build立validation列表。

你应该看看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); 

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); 

如果您已经(使用POI)build议添加到用户可见的第一行上方的行并且应该填充(因此标题下方的行包含),则可以获取下拉列表(在单击鼠标右键后)build议和被隐藏)。

POI甚至纯Excel(无VBA)下拉列表(根据之前input的值提供build议)不会得到(AFAIK)类别依赖性。

你可以做什么,就是使用POI来填充辅助工具表和适当的原始数据,并使用VBAdynamic生成下拉列表,以便从列表中select一个值。