2013-03-18 50 views
0

我正在嘗試使用Apche-poi-3.9在XLS中創建下拉列表。 下面的代碼我寫::apche-poi-3.9 +創建下拉列表

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

回答

1

它工作在Apache poi 3.9不錯,我已經測試it.just incluse這些罐子

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 
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);