我正在尝试使用以下代码在JXL API中显示ComboBox:
ArrayList<String> arrList = new ArrayList<String>();
arrList.add("DropDown1");
arrList.add("DropDown2");
arrList.add("DropDown3");
WritableCellFeatures cellFeatures = new WritableCellFeatures();
cellFeatures.setDataValidationList(arrList);
Blank b = null;
Label checkLabel = null;
for (int x = 0; x < xlData.size(); x++) {
for (int i = 0; i <= 14; i++) {
System.out.println("X:" + x + "I:" + i);
if (i > 9) {
checkLabel = new Label(i, x + xlHeader.size(),(String) arrList.get(0));
//b = new Blank(i, x + xlHeader.size());
//b.setCellFeatures(cellFeatures);
checkLabel.setCellFeatures(cellFeatures);
writableSheet.addCell(checkLabel);
System.out.println("Combo Cell : " + x + ":" + i);
}
}
}
我尝试了“空白”单元格和“标签”。但是Excel仍然没有显示ComboBox。
答案 0 :(得分:2)
将工作表和单元格添加到工作簿后,可以在工作簿上调用write(),然后关闭该文件。最后一步生成输出文件(在本例中为output.xls),可以由Excel读取。 credits this excellent tutorial需要添加:
copy.write();
copy.close();
根据我的测试,这段代码工作正常:
WritableCellFeatures cellFeatures = null;
Label checkLabel = null;
for (int x = 0; x < xlData.size(); x++) {
for (int i = 0; i <= 14; i++) {
System.out.println("X:" + x + "I:" + i);
if (i > 9) {
checkLabel = new Label(i, x + xlHeader.size(), (String) arrList.get(0));
cellFeatures = new WritableCellFeatures();
cellFeatures.setDataValidationList(arrList);
checkLabel.setCellFeatures(cellFeatures);
writableSheet.addCell(checkLabel);
}
}
}
// All cells modified/added. Now write out the workbook
workbook.write();
workbook.close();
根据我的测试,这段代码也可以正常工作:
WritableCellFeatures cellFeatures = null;
Blank b = null;
for (int x = 0; x < xlData.size(); x++) {
for (int i = 0; i <= 14; i++) {
System.out.println("X:" + x + "I:" + i);
if (i > 9) {
b = new Blank(i, x + xlHeader.size());
cellFeatures = new WritableCellFeatures();
cellFeatures.setDataValidationList(arrList);
b.setCellFeatures(cellFeatures);
writableSheet.addCell(b);
}
}
}
// All cells modified/added. Now write out the workbook
workbook.write();
workbook.close();
.xls
,则可能需要另存为.xlsx
以查看组合。我通过Excel2010 / 2013体验过.xls的开放, 即使单元格实际包含数据验证列表并且验证约束有效,数据验证箭头也会丢失;如果要查看箭头和组合框,则需要以新格式保存。
此外,这个缺点似乎是由最后的Excel版本引起的,而不是由JXL引起的,在OpenOffice.org Cal 3.4.1中打开.xls这一事实证明没有任何问题,并且组合正常工作;这可能与我用于测试的当前版本jxl 2.6.12 2009-10-26 以Excel 2000格式生成电子表格
相关The Java code developed for this answer is available给任何想改进或分享它的人。