1 Jika terdapat sedikit tatasusunan drop-down dalam Excel (kira-kira 0~20), anda boleh mengeksportnya dengan cara berikut:
/**
* Excel API
*/
@SuppressWarnings("resource")
HSSFWorkbook book = new HSSFWorkbook();
HSSFSheet sheet = book.createSheet("xxxx");
/**
* 初始化参数
*/
Map<String, String> map = new HashMap<String, String>(); // 查询时用的map
List<Object> list = null;
String[] strs = null; // 用于下拉的数组
int startRow = 1; // 下拉的开始行
int endRow = 100; // 下拉的结束行
CellRangeAddressList regions = null;
DVConstraint constraint = null;
CellRangeAddressList addressList = null;
HSSFDataValidation validation = null; // 数据验证
map.put("namespace", "xxxxxxxxxx.xxxxxxxxxx"); // 查询数据
list = commonQueryService.queryList(map);
strs = StringUtil.mapListToStrs(list); // list转换为字符串数组
cellNum = SpuEnu.CATEGORY_1.getNumber(); // 下拉的列
regions = new CellRangeAddressList(startRow, endRow, cellNum, cellNum); // 开始行、结束行、开始列、结束列的下拉区域均被下拉替代
constraint = DVConstraint.createExplicitListConstraint(strs);
validation = new HSSFDataValidation(regions, constraint); // 绑定下拉框和作用区域
sheet.addValidationData(validation);
2 Masalahnya ialah jika terdapat terlalu banyak tatasusunan drop-down, mesej pengecualian berikut akan muncul dalam POI:
String literals in formulas can't be bigger than 255 characters ASCII
Penyelesaian masalah ini bukan mudah untuk dicari secara online, jadi saya akan siarkan penyelesaiannya di bawah
Ini penyelesaiannya:
Sila beri perhatian kepada dua tempat di atas: