之前,项目使用jxl工具进行报表execl(2003)的生成,execl(2003)最大支持大概在256列,65536行。jxl工具包对中文支持比较好,但后续没有对execl高级版本进行支持,考虑到项目需要支持单条sheet页需要满足超过65536行的数据,有几十万左右。。。(此数据主要是支持程序批量修改使用),所以,改用poi3.8工具包对程序进行改造,支持execl(2007),07支持大概100w行记录,足够使用。对单个cell表格有数据范围的限制,如:对单元格枚举类与数值范围限制等
前期准备工作(包括相关工具或所使用的原料等)
POI3.8EXCEL2007详细的操作方法或具体步骤
创建工作薄,sheet页
Workbook workBook=new XSSFWorkbook();Sheet sheet=workBook.createSheet("test");

设置单个单元格内容
Row row=sheet.createRow(0);row.createCell(0).setCellValue("C");

限制此单元格只支持特定内容,如输入其它内容,直接提示错误信息。
String []values={"A","B","C","D"};XSSFDataValidationConstraint constraint=new XSSFDataValidationConstraint(values);CellRangeAddressList regions=new CellRangeAddressList(0,0,0,0);DataValidationHelper help=new XSSFDataValidationHelper((XSSFSheet)sheet);DataValidation validation=help.createValidation(constraint, regions);validation.createErrorBox("输入值有误", "请从下拉框中选择");validation.setShowErrorBox(true);sheet.addValidationData(validation);

对单元格只能输入数字类型进行限制。
row.createCell(1).setCellValue(3);row.createCell(1).setCellType(Cell.CELL_TYPE_NUMERIC)DataValidationConstraint constrain=new XSSFDataValidationConstraint(DataValidationConstraint.ValidationType.INTEGER,DataValidationConstraint.OperatorType.BETWEEN,"1","10");CellRangeAddressList region=new CellRangeAddressList(0,0,1,1);DataValidation vali=help.createValidation(constrain, region);vali.createErrorBox("输入值类型或大小有误", "数值型,请输入1~10之间的数值");validation.setShowErrorBox(true);sheet.addValidationData(vali);

把文件保存到特定文件路径下。
try { workBook.write(new FileOutputStream("F:/zjc.xlsx"));} catch (FileNotFoundException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace();}

- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
