做项目的时候遇到一个问题,在jsp页面里把数据读出来显示为列表,然后有一个导出的按钮,点击生成excel格式的文件

解决方案 »

  1.   

    比較快的方法是用HTML輸出 content type用 application/vnd.ms-excel
      

  2.   

    点按钮的时候可以掉用后台的方法啊,在后台生成Excel文件。
    生成Excel的类:
     public   static   void  main(String args[])  {
            public void show(){
      try {
               //打开文件
               WritableWorkbook book = Workbook.createWorkbook(new File( "test.xls " ));
               //生成名为“第一页”的工作表,参数0表示这是第一页
               WritableSheet w0  =  book.createSheet("第一页 ",0);
               WritableSheet w1  =  book.createSheet("第二页 ",1);
               WritableSheet w2  =  book.createSheet("第三页 ",2);
               //在Label对象的构造子中指名单元格位置是第一列第一行(0,0),以及单元格内容为test
               //第一个参数表示列,第二个参数表示行,第三个参数表示数据
               Label label = new Label( 0 ,  0 ,  " test " );
               //将定义好的单元格添加到工作表中
               w0.addCell(label);
               //生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123
               jxl.write.Number number  =   new  jxl.write.Number( 1 ,  0 ,  555.12541 );
               w0.addCell(number);
               //这种方式是以文本字符的形式将数值存储到xls文件中的。
               w1.addCell(new Label(0,0,"12"));
               w1.addCell(new Label(1,0,"21"));
               w1.addCell(new Label(2,0,"123"));
               
               //第二列,第一行==========存储数字必须有Number的实例是
               w1.addCell(new Number(1,0,123));
               //第二列,第五行
               w2.addCell(new Number(1,4,123));
               //写入数据并关闭文件
               book.write();
               book.close();
      } catch (Exception e)  {
               System.out.println(e);
           }
          }
        }读取Excel的类:
    public   class  ReadExcel  {
         public   static   void  main(String args[])  {
             try   {
                Workbook book = Workbook.getWorkbook(new File("f:\\test.xls"));
                //获得第一个工作表对象
                Sheet sheet  =  book.getSheet(0);
                //得到第一列第一行的单元格
                Cell cell1 = sheet.getCell(0,0);
                String result = cell1.getContents();
                System.out.println(result);
                //得到整个第一列
                Cell [] ces = sheet.getColumn(0);
                for (int i = 0; i < ces.length; i++) {
        System.err.println(ces[i].getContents());
       }
                //得到整个第一行
                Cell [] crs = sheet.getRow(0);
                for (int i = 0; i < crs.length; i++) {
        System.err.println(crs[i].getContents());
       }
                book.close();
            }   catch  (Exception e)  {
                System.out.println(e);
            }
        }
    //修改Excel的类
    public   class  UpdateExcel  {
         public static void  main(String args[])  {
             try {
                //Excel获得文件
                Workbook wb = Workbook.getWorkbook(new File("f:\\test.xls" ));
                //打开一个文件的副本,并且指定数据写回到原文件
                WritableWorkbook book = Workbook.createWorkbook(new File("f:\\test.xls"),wb);
                //添加一个工作表
                //第一个参数:新添加的页面名称。2表示它的位置,从零开始,2表示第三页
                WritableSheet sheet = book.createSheet("第二页 ",2);
                sheet.addCell(new Label(0,0," 第二页的测试数据 " ));
                book.write();
                book.close();
            }   catch  (Exception e)  {
                System.out.println(e);
            }
        }
    }这是代码,感兴趣的话可以加入59673719(IT精英),大家相互学习。
      

  3.   

    楼上的方法我知道
    关键是我如何将读取的信息给塞到excel里面
      

  4.   

    简单的做法就是查出数据,自己利用那个常用的jar包自己写代码转!
      

  5.   

    JXL.JAR, JXLS.JAR。
    LZ查查这2个JAR包看看?
      

  6.   

    用jxl poi都能解决这个问题
      

  7.   

    哥们,你定义方法的时候,吧list传进去啊
      

  8.   

    你可以点击“导出”,调用一个action,传入查询参数,然后调用后台逻辑(就跟你的结果页面的逻辑一样),使用jxl或者poi弹出excel
    至于动态填充,可以去看看ireport和jasperreport