0

Apache-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

4

2 に答える 2

3

Apache POI には、まさにこの問題に関する FAQ があります。あなたの問題を解決するので、そこから引用します

私のコードはいくつかの新機能を使用しており、正常にコンパイルされますが、「MethodNotFoundException」、「NoSuchMethodError」、または「IncompatibleClassChangeError」が発生すると失敗します。

ほとんどの場合、クラスパスに古いバージョンの POI があります。かなりの数のランタイムやその他のパッケージが古いバージョンの POI を出荷するため、これは気付かないうちに発生しやすい問題です。

問題のある以前の jar ファイルを特定する最善の方法は、数行の Java を使用することです。これらはコア POI クラスの 1 つをロードし、それがどこから来たかを報告します。

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);
于 2013-03-18T10:25:55.350 に答える
1

それは正常に動作しApache poi 3.9、私はそれをテストしました。これらのjarファイルを含めるだけです

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
于 2013-03-18T09:47:09.530 に答える