在jsp中写一个表格,然后我想把这个表格下载到本地.就是单击按钮提示是否保存..求详解..

解决方案 »

  1.   

    怎么个详解法?你后台把要下载的excel,其实不管什么准备好,或者直接给超链接,前台点了就下了
      

  2.   

    我知道点击按钮跳到action, 但我想说跳到action之后代码怎么写...
      

  3.   

    http://www.cnblogs.com/raymond19840709/archive/2008/06/26/1230289.html可以看下这个  用jxl
      

  4.   

     三楼能讲解一下,这个下载的原理吗...为什么要创建文件,读取文件,修改文件...还有如果是ssh我应该代码写在哪里...
      

  5.   

    你直接在网上搜索下poi 我个人感觉ssh框架下用非常简单方便。
      

  6.   

    简单循环打印
                        OutputStream os = response.getOutputStream();// 取得输出流
            response.reset();// 清空输出流
            String urlName = "专家编码";
            response.setHeader("Content-disposition", "attachment; filename="
                    + new String(urlName.getBytes("gbk"), "ISO-8859-1") + ".xls");// 设定输出文件头
            response.setContentType("application/msexcel");// 定义输出类型
            try {
                String worksheet = "专家编码"; // 输出的excel文件工作表名
                String[] title = { "学校名称", "专家帐号", "专家编码" }; // excel工作表的标题
                WritableWorkbook workbook = Workbook.createWorkbook(os); // 建立excel文件
                WritableSheet sheet = workbook.createSheet(worksheet, 0); // 添加第一个工作表
                // 设置列宽
                sheet.setColumnView(0, 20);
                sheet.setColumnView(1, 40);
                jxl.write.Label label;
                // 单元格值居中显示
                WritableCellFormat cellFormat = new WritableCellFormat();
                cellFormat.setAlignment(jxl.format.Alignment.CENTRE);
                for (int i = 0; i < title.length; i++) {
                    // Label(列号,行号 ,内容 )
                    label = new jxl.write.Label(i, 0, title[i], cellFormat);
                    sheet.addCell(label);
                }
                List<Object[]> list = stjDao.getAllZj();
                // i 行数
                for (int i = 0; i < list.size(); i++) {
                    Object[] object = list.get(i);
                    String schoolName = (String) object[0];
                    String zjName = (String) object[1];
                    String zjbm = (String) object[2];
                    if (zjbm == null || "".equals(zjbm)) {
                        zjbm = "学校自评";
                    }
                                            //向execl表中填充值
                    label = new Label(0, i + 1, schoolName, cellFormat);
                    sheet.addCell(label);
                    label = new Label(1, i + 1, zjName, cellFormat);
                    sheet.addCell(label);
                    label = new Label(2, i + 1, zjbm, cellFormat);
                    sheet.addCell(label);
                }
                // 关闭
                workbook.write();
                workbook.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
      

  7.   

    用poi或者jxl都可以。个人比较推荐jxl,比较轻量级。你google看看。网上很多教程的。
      

  8.   


    public String excel() throws Exception {
    String con = buildCon(startDate, endDate);
    List<Index> index = indexService.getExcel(con);

    HttpServletResponse response = ServletActionContext.getResponse();
    String fileName = "首页访问信息.xls";
    fileName = new String(fileName.getBytes("GBK"),"ISO-8859-1");
            response.reset();
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-Disposition","attachment;filename=" + fileName);
            OutputStream os = response.getOutputStream();
            WritableWorkbook book = Workbook.createWorkbook(os);
            int maxSize = 60000;            //一页最多条数
            int size = index.size();
            int a = size/maxSize;       //页数
            int b = (size-a*maxSize)%maxSize;   //最后一页条数
            if(b !=0 ) {
             a++;
            }
            for(int m=0; m<a; m++) {
             int k = m+1;
             WritableSheet sheet = book.createSheet("第" + k + "页",m);
    Label label1=new Label(0,0,"用户名");
    Label label2=new Label(1,0,"访问时间");
    sheet.addCell(label1);
    sheet.addCell(label2);
    Label label = null;
    int n = 0;
    if(k == a) {
    n = m*maxSize+b;
    }else {
    n = k*maxSize;
    }
    for(int i=m*maxSize,j=0; i<n; i++,j++) {
    label = new Label(0,j+1,index.get(i).getUsername());
    sheet.addCell(label);
    label = new Label(1,j+1,index.get(i).getDate());
    sheet.addCell(label);
    }
            }
    book.write();
    book.close();
    os.flush();
    os.close();

    return null;
    }我是写在action里的
    大概这样就可以 
    我是加了分页的 你可以根据需求改改