我用poi将jsp页面上的数据生成excel,下了poi的三个压缩包,poi-3.2-FINAL-20081019.jar,poi-contrib-3.2-FINAL-20081019.jar,poi-scratchpad-3.2-FINAL-20081019.jar ,然后写了个servlet生成excel,但是访问的时候报了被错误:严重: Allocate exception for servlet PdExcel
java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook
at hk.sunshow.hetong.xiangmu.PdExcel.<init>(PdExcel.java:14)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)是不是还要什么poi包?不过我将我的生成excel的代码放在main函数中测试是成功的。不知道是不是我压缩包放错位置啦。我是放在工程lib下了。请各位高手帮帮忙,很急呢 今天就要完成呢。拜托啦!!!

解决方案 »

  1.   

    http://www.devlib.org/apache/jakarta/poi/
      

  2.   

    我看看,但是为什么在main函数中没报错呢?
      

  3.   

    poi-bin-3.0-FINAL-20070503 我下的是这个啊 只用了解压后的三个压缩文件
      

  4.   

    你把code贴出来吧!一般只放这一个包就行了poi-3.2-FINAL-20081019.jar,如果你有用到其他的类,就放三个吧!前几天我在公司有做过生成Excel图表,一切正常呀!
      

  5.   

    package hk.sunshow.hetong.xiangmu;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    public class PdExcel extends HttpServlet{

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
        doPost(req, resp);
    }
      
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
      HSSFWorkbook   wb   =   new   HSSFWorkbook();//建立新HSSFWorkbook对象   
      HSSFSheet   sheet   =   wb.createSheet("newsheet");//建立新的sheet对象   
      HSSFRow   row   =   sheet.createRow((short)0);//建立新行   
      HSSFCell   cell   =   row.createCell((short)0);//建立新cell   
      cell.setCellValue(1);//设置cell的整数类型的值   
                      row.createCell((short)1).setCellValue(1.2);//设置cell浮点类型的值   
        
      row.createCell((short)2).setCellValue("only   a   test");//设置cell字符类型的值   
        
      row.createCell((short)3).setCellValue(true);//设置cell布尔类型的值     
        
      HSSFCellStyle   cellStyle   =   wb.createCellStyle();//建立新的cell样式   
        
      //cellStyle.setDataFormat(HSSFDataFormat.getFormat("yyyy/MM/dd   hh:mm:ss.ms   EEE"));//设置cell样式为定制的日期格式   
        
      HSSFCell   dCell   =row.createCell((short)4);   
        
      dCell.setCellValue(new   java.util.Date());//设置cell为日期类型的值   
        
      dCell.setCellStyle(cellStyle);   //设置该cell日期的显示格式   
        
      HSSFCell   csCell   =row.createCell((short)5);   
        
      csCell.setEncoding(HSSFCell.ENCODING_UTF_16);//设置cell编码解决中文高位字节截断   
        
      csCell.setCellValue("中文测试_Chinese   Words   Test");//设置中西文结合字符串   
        
      row.createCell((short)6).setCellType(HSSFCell.CELL_TYPE_ERROR);//建立错误cell   
        
      FileOutputStream   fileOut   =   new   FileOutputStream("D:\\Excel20060415.xls");   
        
      wb.write(fileOut);   
        
      fileOut.close();   
                    System.out.println(">>>       D:\\test2.xls");   
                    
                 resp.sendRedirect("/test2.jsp");
                  
    }

    }
      

  6.   

    poi-bin-3.2-FINAL-20081019.zip 把这个压缩文件全部放在lib下吗 还是解压后选三个就好了
      

  7.   

    我们一般只用了一个poi-3.5-beta5-20090219.jar
      

  8.   

    poi-3.0-alpha3-20061212.jar
    poi-contrib-3.0-alpha3-20061212.jar
    poi-scratchpad-3.0-alpha3-20061212.jar
    这3个jar