现在使用apache的poi组件版本是3.2
想获取Excel中某个Sheet包含的数据有效性的输入信息,如何获取?(该版本有个方法getDVRecords() 返回list,应该是返回设置的内容,但我测试已经设置了数据有效性的Excel的时候获取数组为空)

解决方案 »

  1.   

    刚学 只知道如何用它导出EXCEL
      

  2.   

     //绑定下拉框和作用区域 .并添加输入内容提示
            HSSFDataValidation data_validation = new HSSFDataValidation(regions,
                    constraint);
            data_validation.createPromptBox("tip","select");  这是我的。。已经实现
      

  3.   

    不明白什么是“数据有效性的输入信息”,能否解释一下。
    要是只是获取一下excel的内容应该很简单,根据行列就可以直接取到了啊。
      

  4.   

    读取单元格的内容对不同的数据类型有不同的方法,如公式单元格,最麻烦的就是数字和日期时间不能区别,头都会搞大,如果只是普通的字符串类型就好办多了。
    try {
    switch (cell.getCellType()) {
    case HSSFCell.CELL_TYPE_FORMULA:
    HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(wb);
    if (logger.isDebugEnabled()) {
    logger.debug("公式内容:" + cell + "值:" + evaluator.evaluateFormulaCell(cell));
    }
    value = String.valueOf(cell.getNumericCellValue());
    break;
    case HSSFCell.CELL_TYPE_NUMERIC:
    value = String.valueOf(cell.getNumericCellValue());
    break;
    case HSSFCell.CELL_TYPE_STRING:
    case HSSFCell.CELL_TYPE_BLANK:
    value = String.valueOf(cell);
    break;
    default:
    value = cell.getRichStringCellValue().getString();
    }
      

  5.   


    POIFSFileSystem fs = null;
    HSSFWorkbook wb = null;
    try {
    fs = new POIFSFileSystem(new FileInputStream(FileSavePath + Newfilename));
    wb = new HSSFWorkbook(fs);
    } catch (IOException e) {
    out.println("<script langugage=javascript>alert('无效的Excel文件!');window.history.go(-1);</script>");
    return;
    }
    // 第一个工作表,Sheet1
    HSSFSheet sheet = wb.getSheetAt(0);
    HSSFRow row = null;
    HSSFCell cell = null;// Excel 中第一个名字的单元格
    String name = ""; 
    int rowNum;
    int i;
    rowNum = sheet.getLastRowNum(); // Excel 中的记录行数
    for (i = 0; i <= rowNum; i++) {
    row = sheet.getRow(i);
    // 判断 Excel 文件 为空
    if (row == null) {
    out.println("<script langugage=javascript>alert('   Excel 文件 为空 !');window.history.go(-1);</script>");
    return;
    }
    cell = row.getCell((short) 0);
    if (cell == null || cell.getStringCellValue().trim() == "") {
    out.println("<script langugage=javascript>alert('名字不能为空!');window.history.go(-1);</script>");
    return;
    } else {
    name = cell.getStringCellValue().trim();
    }
      

  6.   

    apache的poi组件已更新到3.5了,还是没找到如何获取sheet包含的HSSFDataValidation方法。
    由于需要,想对每个单元格存储一些相应的信息,这样,在操作Excel单元格的时候(主要是移动),
    能判断出该单元格所附加的信息,这个信息不能用批注的形式写入,所以想到用设置数据有效性信息的方法来保存部分隐藏信息,通过程序可以将该信息写入
    方法:addValidationData(HSSFDataValidation dataValidation) 
    但是取不到写入的信息,哪位大侠有更好的方法,请赐教。
      

  7.   

    http://www.java2000.net/p1681使用POI输出Excel文件http://www.java2000.net/p1682POI操作Excel文档-基础篇http://www.java2000.net/p1683POI操作Excel文档-中级篇
    去看吧
      

  8.   

    http://blog.csdn.net/kbyst/archive/2009/09/03/4514487.aspx
      

  9.   

    感谢大家的回复,内容很全,但是仍然没有我想要的设置。
    public void setValidation(HSSFSheet sheet,String title,String content,boolean isShow,int rowno,int colno) {
         DVConstraint constraint=DVConstraint.createNumericConstraint(DVConstraint.ValidationType.ANY,DVConstraint.OperatorType.BETWEEN, null, null);
         //设置数据有效性位置
         CellRangeAddressList regions=new CellRangeAddressList(rowno,rowno,colno,colno);
         //创建验证对象
         HSSFDataValidation data_validation = new HSSFDataValidation(regions, constraint);
         //添加提示标题和内容
         data_validation.createPromptBox(title,content);
         //设置是否显示
         data_validation.setShowPromptBox(isShow);
         //添加到工作表中
         sheet.addValidationData(data_validation);
        }
    可以设置某个单元格的数据有效性信息,title和content,但是不知道如何取出。