我使用poi导出Excel,第一次导出Excel正确,第二次导出Excel时就多了一行数据,这是什么原因?

解决方案 »

  1.   

    多出来的一行是第一次导出的数据?POIFSFileSystem没有重新new吧?
      

  2.   

    数据没问题的话就是哪里的代码有问题  好好查一下
    不行就debug看看
      

  3.   

    //建立工作簿
    HSSFWorkbook workbook = new HSSFWorkbook();
    //建立Excel 页
    HSSFSheet sheet = workbook.createSheet();
    //设置Cell 宽度
    private void setColumnWidth(HSSFSheet sheet)
    {
        //根据你数据里面的记录有多少列,就设置多少列
        sheet.setColumnWidth((short) 0, (short) 3000);
        sheet.setColumnWidth((short) 1, (short) 3000);
        sheet.setColumnWidth((short) 2, (short) 3000);
    }已经建好了一个只有一个sheet的excel,3列
      

  4.   

       /**创建一个空白的excel文件,这个是excel文件在java中的对象,java不是操作对象的语言吗? 
         *那么就将一个excel文件映射成为一个对象。然而这个excel的对象在java就是HSSFWorkbook 
        *那么也就是说:在java中你要使用poi来操作excel那么HSSFWorkbook对象就是你要操作的那个excel文件, 
         *当HSSFWorkbook 对象是一个空对象的时候,就默认为你创建了一个excel文件 
         */ 
         HSSFWorkbook hssfworkbook = new HSSFWorkbook(); 
      

  5.   

    我现在的问题是:我用poi导出数据为Excel时出现这么个问题:如果第一次导出时为三条数据,导出正确那第二次导出时数据为一条,可Excel中显示为三条,其中第一条为要导出的数据,后两条为第一次导出时的数据这是什么原因???????????????? 
     
      

  6.   

    你每次都输出到同一个excel文件自然会覆盖原先的纪录了。
    你要么就输出到不同文件,要么就记住上次的行数,然后输出到行数++上
      

  7.   

    不是这样的,我每次输出的都是不同的Excel文件处理生成Excel文件
    String areaOrganSeq = request.getParameter("areaOrganSeq");
    String officeUserGroupSeq = request.getParameter("officeUserGroupSeq");
    // System.out.println("++++++++++++++++++++++++++++++++++++++++++++++"+officeUserGroupSeq);
    String fp = request.getParameter("flag");
    HSSFWorkbook demoWorkBook = new HSSFWorkbook();
    HSSFSheet demoSheet = demoWorkBook.createSheet("通讯录");
        //得到当前时间
    SimpleDateFormat dateformat1=new SimpleDateFormat("yyyyMMddHHmmssssss");
    String time = dateformat1.format(new Date());
    HttpSession session = request.getSession();
    String fileName = time+".xls";
    String folder = "Excel\\";
    String fileName1 = folder + fileName; 
    folder = session.getServletContext().getRealPath("/")+folder;
    if(!(new File(folder).isDirectory())) {
    new File(folder).mkdir();
    }
    // HttpSession session = request.getSession();
    String path = folder +fileName;
    // System.out.println(path);
            FileOutputStream fos = new FileOutputStream(path);
    //        System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+fos.toString());
            try {   
             PoiDemo pd = new PoiDemo();
                pd.createExcelSheeet(areaOrganSeq,officeUserGroupSeq);
                pd.exportExcel(demoSheet,fos);
                fos.close(); 
             } catch (Exception e) {   
                e.printStackTrace();   
             } finally {   
              try {   
              fos.close();  
              } catch (Exception e) {   
                     e.printStackTrace();   
                 }   
             }
            request.setAttribute("areaOrganSeq", areaOrganSeq);
            request.setAttribute("excel", fileName1);
            request.setAttribute("seq", officeUserGroupSeq);
            System.out.println("fp:"+fp);
            if("null".equals(fp) || null == fp || "".equals(fp)) {
             return mapping.findForward("excel");
            } else {
            }
      

  8.   


             return mapping.findForward("saveExcel");不是这样的,我每次输出的都是不同的Excel文件String areaOrganSeq = request.getParameter("areaOrganSeq");
    String officeUserGroupSeq = request.getParameter("officeUserGroupSeq");
    // System.out.println("++++++++++++++++++++++++++++++++++++++++++++++"+officeUserGroupSeq);
    String fp = request.getParameter("flag");
    HSSFWorkbook demoWorkBook = new HSSFWorkbook();
    HSSFSheet demoSheet = demoWorkBook.createSheet("通讯录");
        //得到当前时间
    SimpleDateFormat dateformat1=new SimpleDateFormat("yyyyMMddHHmmssssss");
    String time = dateformat1.format(new Date());
    HttpSession session = request.getSession();
    String fileName = time+".xls";
    String folder = "Excel\\";
    String fileName1 = folder + fileName; 
    folder = session.getServletContext().getRealPath("/")+folder;
    if(!(new File(folder).isDirectory())) {
    new File(folder).mkdir();
    }
    // HttpSession session = request.getSession();
    String path = folder +fileName;
    // System.out.println(path);
            FileOutputStream fos = new FileOutputStream(path);
    //        System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+fos.toString());
            try {   
             PoiDemo pd = new PoiDemo();
                pd.createExcelSheeet(areaOrganSeq,officeUserGroupSeq);
                pd.exportExcel(demoSheet,fos);
                fos.close(); 
             } catch (Exception e) {   
                e.printStackTrace();   
             } finally {   
              try {   
              fos.close();  
              } catch (Exception e) {   
                     e.printStackTrace();   
                 }   
             }
            request.setAttribute("areaOrganSeq", areaOrganSeq);
            request.setAttribute("excel", fileName1);
            request.setAttribute("seq", officeUserGroupSeq);
            System.out.println("fp:"+fp);
            if("null".equals(fp) || null == fp || "".equals(fp)) {
             return mapping.findForward("excel");
            } else {
            }
      

  9.   

    PoiDemo这个类是你自己写的?
    那问题多半就出在
    pd.createExcelSheeet(areaOrganSeq,officeUserGroupSeq); 
    pd.exportExcel(demoSheet,fos);
    另外你在servlet里创建HSSFSheet但没看到使用阿,直接在PoiDemo里创建不可以吗?
      

  10.   

    问题已经解决,是PoiDemo类中的数据共享造成的,谢谢各位.