最近使用jxl做excel模板,遇到几个问题:
1.jxl对列的操作
WritableCellFormat textFormat = new WritableCellFormat(NumberFormats.TEXT);
CellView cv = new CellView();
cv.setFormat(textFormat);
cv.setSize(20*265);
sheet.setColumnView(col,cv);//定义某一列为文本格式
2.jxl对下拉框的实现
for (int ii=1;ii<200;ii++) {
WritableCellFeatures netContentUnit = new WritableCellFeatures();
netContentUnit.setDataValidationList(netContentUnitlist);
netContentUnit.setComment("请输入正确格式:g,kg,ml,l");
Blank blank = new Blank(netContentCol, ii);
Blank blank1 = new Blank(shelfLifeCol, ii);
blank.setCellFeatures(netContentUnit);
sheet.addCell(blank);
sheet.addCell(blank1);
}
做这个遇到个头疼的问题,本机装的2013版的excel,下拉框一直出不来,但是数据校验是有做的,后来去同事那试了2007版的就有出来,后来查了资料(还是翻墙找的,度娘不靠谱),发现如果本机装的是2013版本的excel,需要把文件另存为xlsx才会起效果。参考http://stackoverflow.com/questions/18780151/not-able-to-view-combobox-in-excel-using-jxl-api
但是做这种下拉框的代价是,模板的文件大小就会很大,导致打开很慢,所以不适合做成那种导入行数不确定的场景。而且还有个问题是,目前不知道用哪种方式可以直接对某一列进行设置这种下拉框,还有其他对单元格文本长度的校验等目前还没有摸索出来。
3.基本使用
sheet.getSettings().setDefaultColumnWidth(15);//表格的默认列宽
sheet.getSettings().setDefaultRowHeight(400);//表格的默认行高度
sheet.setRowView(0, 1300);//设置某一行的