int i = hssfsheet.getLastRowNum();getLastRowNum是获取最后一条数据的行数,原来有5条记录,那么就获取5。这个没有问题
可是当我删除一条记录后,本应该获取4,他还获取5。
当我把数据增加到6条的时候,他获取6,也没有问题。
可是当我再删除一条记录后,本应该获取5,他还获取6。不知各位用过POI的大虾是否遇到过类似的问题。请大家帮帮忙吧!我的成败在此一举了。各位,行行好吧!走过路过的不要错过!!!跪谢!!!

解决方案 »

  1.   

    你要到http://archive.apache.org/dist/jakarta/poi/release/bin中下载POI类库,我做了一个使用poi操作Excel工作簿的例子,你看看
    1.Servlet代码;
    package cn.ac.ict;
    import java.io.IOException;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.*;import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.PrintWriter;
    import java.text.DecimalFormat;
    import java.util.Enumeration;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    public class POIExcelServlet extends HttpServlet{
    private String poiexcelPath="";
    public void init(ServletConfig config)throws ServletException{
    super.init(config);
    poiexcelPath="E:\\PublishBook\\JSP\\File\\telx.xls";
    }
    protected void doGet(HttpServletRequest request,HttpServletResponse response)
    throws ServletException,IOException{
    doPost(request,response);
    }
    protected void doPost(HttpServletRequest request,HttpServletResponse response)
    throws ServletException,IOException{
    CreateExcel(this.poiexcelPath,request);
    readExcel(this.poiexcelPath,response);

    }

    public void CreateExcel(String filename, HttpServletRequest request) {
    String outputFile=filename;
    int i=1;
    String name;
    String value;
    try{
    HSSFWorkbook workbook=new HSSFWorkbook();
    HSSFSheet sheet=workbook.createSheet("New Sheet");
    HSSFRow row=sheet.createRow((short)0);
    HSSFCell cell=row.createCell((short)0);
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setCellValue("Parameter name");
    cell=row.createCell((short)1);
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setCellValue("Parameter name");
    Enumeration enum1=request.getParameterNames();
    System.out.println(enum1.toString());
    while(enum1.hasMoreElements()){
    row=sheet.createRow((short)1);
    cell=row.createCell((short)0);
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    name=(String)enum1.nextElement();
    value=(String)request.getParameter(name);
    cell.setCellValue(name);
    System.out.println("name="+name+"\n");
    cell=row.createCell((short)1);
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setCellValue(value);
    System.out.println("value="+value+"\n");
    i++;
    }
    FileOutputStream fOut=new FileOutputStream(outputFile);
    workbook.write(fOut);
    fOut.flush();
    fOut.close();
    System.out.println("文件生成---");
    }catch(Exception e){
    System.out.println("已经运行了ExcelCreate()"+e);
    }

    }

    public void readExcel(String filename, HttpServletResponse response)
    throws IOException{
    DecimalFormat df=new DecimalFormat("#");
    String fileToBeRead=filename;
    PrintWriter out=response.getWriter();
    try{
    HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(fileToBeRead));
    for(int numSheets=0;numSheets<workbook.getNumberOfSheets();numSheets++){
    if(null!=workbook.getSheetAt(numSheets)){
    HSSFSheet aSheet=workbook.getSheetAt(numSheets);
    for(int rowNumOfSheet=0;rowNumOfSheet<=aSheet.getLastRowNum();rowNumOfSheet++){
    if(null!=aSheet.getRow(rowNumOfSheet)){
    HSSFRow aRow=aSheet.getRow(rowNumOfSheet);
    for(short cellNumOfRow=0;cellNumOfRow<=aRow.getLastCellNum();cellNumOfRow++){
    if(aRow.getCell(cellNumOfRow)!=null){
    HSSFCell aCell=aRow.getCell(cellNumOfRow);
    int cellType=aCell.getCellType();
    switch(cellType){
    case 0:
    String strCell=df.format(aCell.getNumericCellValue());
    out.println(strCell+"  ");
    break;
    case 1:
    strCell=aCell.getStringCellValue();
    out.println(strCell+"  ");
    break;
    default:
    out.println("数据格式不对,无法读取");
    }
    }

    }
    out.print("<br>");
    }


    }


    }
    }

    }catch(Exception e){
    System.out.println("ReadExcelError"+e);
    }


    }}
    2.poi.htm
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>POIExcel操作介绍</title>

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="this is my page">
        <meta http-equiv="content-type" content="text/html; charset=gb2312">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  </head>
      
      <body>
       <form action="poiexcel" method="post">
         <input name="input_1" type="text">
         <input name="input_2" type="text"><br>
         <input name="input_3" type="text">
         <input name="input_4" type="text"><br>
         <input name="input_5" type="text">
         <input name="" type="submit"><input name="" type="reset">     
       </form>
      </body>
    </html>
    3.web.xml配置
    <servlet>
      <servlet-name>poiexcel</servlet-name>   
      <servlet-class>cn.ac.ict.POIExcelServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>poiexcel</servlet-name>
      <url-pattern>/poiexcel</url-pattern>
    </servlet-mapping>
    上面是我用Jsp技术做的一个小应用,没有加注解,你看看吧