java poi下拉框值有限制吗_使用Apache POI在Excel中生成下拉列表时是否有最大数量的项目?...

我正在尝试使用Apache POI为一个单元格添加下拉列表 . 下拉列表包含302个字符串 . 我总是遇到这个错误:Excel在test.xlsx中找到了不可读的内容 .

然后我做了以下测试 . 当项目数<= 88时,下拉列表成功创建 . 当数字> 88时,打开excel文件时出错,没有下拉列表 .

谢谢 !!!

import org.apache.poi.xssf.usermodel.*;

import org.apache.poi.ss.util.CellRangeAddressList;

import org.apache.poi.ss.usermodel.*;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.TreeSet;

public class Test {

public static void main(String[] args) {

TreeSet temp_rxGroups = new TreeSet();

for (int i = 0; i < 100; i++) {

temp_rxGroups.add("" + i);

}

String[] countryName = temp_rxGroups.toArray(new String[temp_rxGroups.size()]);

XSSFWorkbook workbook = new XSSFWorkbook();

XSSFSheet realSheet = work

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Apache POI 导出 Excel 并监听单元格下拉框的内容,可以通过以下步骤实现: 1. 创建一个工作簿和工作表: ``` Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); ``` 2. 创建一个下拉列表并设置下拉列表的选: ``` String[] options = {"Option1", "Option2", "Option3"}; DataValidationHelper validationHelper = new XSSFDataValidationHelper(sheet); CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0); DataValidationConstraint constraint = validationHelper.createExplicitListConstraint(options); DataValidation dataValidation = validationHelper.createValidation(constraint, addressList); sheet.addValidationData(dataValidation); ``` 3. 监听单元格内容变化的事件: ``` sheet.addChangeListener(new SheetChangeListener() { @Override public void sheetChanged(SheetChangeEvent event) { // 获取发生变化的单元格 Cell cell = event.getCell(); // 判断单元格是否下拉列表的单元格 if (cell.getCellType() == CellType.STRING && cell.getAddress().getColumn() == 0 && cell.getAddress().getRow() == 0) { // 获取下拉列表的值 String selectedOption = cell.getStringCellValue(); // 在下一个单元格填充对应的数据 Row row = sheet.getRow(0); Cell nextCell = row.getCell(1); if (nextCell == null) { nextCell = row.createCell(1); } nextCell.setCellValue(getDataForOption(selectedOption)); } } }); ``` 在这个监听事件,我们首先判断单元格是否下拉列表的单元格,如果是,则获取下拉列表的值,并在下一个单元格填充对应的数据。 需要注意的是,此处的 `SheetChangeListener` 是自定义的监听器,需要实现 `SheetChangeListener` 接口并重写 `sheetChanged` 方法。另外,`getDataForOption` 方法是根据选下拉列表值获取对应的数据的自定义方法。 完整的代码示例如下: ``` Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); String[] options = {"Option1", "Option2", "Option3"}; DataValidationHelper validationHelper = new XSSFDataValidationHelper(sheet); CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0); DataValidationConstraint constraint = validationHelper.createExplicitListConstraint(options); DataValidation dataValidation = validationHelper.createValidation(constraint, addressList); sheet.addValidationData(dataValidation); sheet.addChangeListener(new SheetChangeListener() { @Override public void sheetChanged(SheetChangeEvent event) { Cell cell = event.getCell(); if (cell.getCellType() == CellType.STRING && cell.getAddress().getColumn() == 0 && cell.getAddress().getRow() == 0) { String selectedOption = cell.getStringCellValue(); Row row = sheet.getRow(0); Cell nextCell = row.getCell(1); if (nextCell == null) { nextCell = row.createCell(1); } nextCell.setCellValue(getDataForOption(selectedOption)); } } }); private String getDataForOption(String option) { // 根据选下拉列表值获取对应的数据 // ... return "Data for " + option; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值