apache-poi-3.9 +创建下拉列表

时间:2013-03-18 07:12:20

标签: apache-poi

我正在尝试使用Apche-poi-3.9在XLS中创建下拉列表。 以下代码我写了::

public class TestMacroTemplate {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String args[]) throws FileNotFoundException {
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("Data Validation");
        CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
        DVConstraint dvConstraint = DVConstraint
                .createExplicitListConstraint(new String[] { "10", "20", "30" });
        DataValidation dataValidation = new HSSFDataValidation(addressList,
                dvConstraint);
        dataValidation.setSuppressDropDownArrow(false);
        sheet.addValidationData(dataValidation);
        FileOutputStream fileOut = new FileOutputStream("XLCellDropDown.xls");
        try {
            workbook.write(fileOut);
            fileOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

但是它给出了以下例外:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFSheet.addValidationData(Lorg/apache/poi/ss/usermodel/DataValidation;)V
    at ejb.TestMacroTemplate.main(TestMacroTemplate.java:31)

相同的代码适用于Apache-poi-3.2

请帮帮我。

谢谢, Nirav

2 个答案:

答案 0 :(得分:3)

Apache POI有一个FAQ on this very problem。我会从那里引用,因为它会解决你的问题

  

我的代码使用了一些新功能,编译正常,但在使用“MethodNotFoundException”,“NoSuchMethodError”或“IncompatibleClassChangeError”

时失败      

您的类路径上几乎肯定有旧版本的POI。相当多的运行时和其他软件包将发布旧版本的POI,因此这是一个容易触及的问题。

     

识别有问题的早期jar文件的最佳方法是使用几行java。这些将加载其中一个核心POI类,并报告它来自何处。

ClassLoader classloader =
   org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoader();
URL res = classloader.getResource(
         "org/apache/poi/poifs/filesystem/POIFSFileSystem.class");
String path = res.getPath();
System.out.println("Core POI came from " + path);

答案 1 :(得分:1)

它在Apache poi 3.9中工作正常,我测试了它。只包括这些罐子

poi-scratchpad-3.9-20121203.jar
poi-3.9-20121203.jar
poi-examples-3.9-20121203.jar
poi-excelant-3.9-20121203.jar
poi-ooxml-3.9-20121203.jar
poi-ooxml-schemas-3.9-20121203.jar