我查询得到数据在显示在当前页,页面有个button按钮希望点击以后弹出一个保存对话框   选择路径保存为excel格式的文件.  如果大家有做过的,能给我一份详细点的例子吗?谢谢..

解决方案 »

  1.   

    我在上课...对于你要导出的数据是否是当前页完全没关系(当然也可以是当前页)一般步奏:HQL 查询要导出的数据
    自己定制导出的excel表样式(不设定的话,就是不美观而已)
    .
    .
    .没了把~
      

  2.   

    POI,不知道写错没,很久没用了。
    去找找这个资料,简单易用
      

  3.   

    可以将要导出的数据展示在 jsp 页面,该JSP页面头为<%@ page contentType="application/vnd.ms-excel; charset=gb2312"%> 即可
      

  4.   

    在后台写一个导出的函数,用java操作excel将数据封装成list等一类,就行了
      

  5.   

    现成的例子没有哇!我们都是封装的,不直接写JSP,我们做的系统不是网站,纯JSP太难维护。我用POI写了一个工具类,只要给他结果集,表头,就可以了。哦是一个ExcelServlet和一个封装的类。表格工具我们用的是ECTable不知道听说过没,用他的话有自动导出功能,还能导出PDF呢。
      

  6.   

    我在后台写的函数都已经测试好了,能保存到excel。但是,前台jsp页面的数据,不知道怎么和后台的数据结合。
    public void export(){
     ExcelExportAction e=new ExcelExportAction();
    // String path = getServletContext().getRealPath("excelexport"); 
    // System.out.println("path:"+path);   Date now = new Date();  
      String as=e.time(now);
    FileOutputStream fos;
    try {
    fos = new FileOutputStream("d://excel/a.xls");
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("sheet1");
    String[] term_id ={"1","2"};
    String[] name={"a","b"};
    // 以下以写表头
    // 表头为第一行
    HSSFRow row = sheet.createRow((short) 0);

    // 定义10列
    HSSFCell cell1 = row.createCell((short) 0);
    HSSFCell cell2 = row.createCell((short) 1);
    cell1.setEncoding((short) 1);
    cell1.setCellType(1);
    cell2.setEncoding((short) 1);
    cell2.setCellType(1);
    // 定义表头的内容
    cell1.setCellValue("纳税人管");
    cell2.setCellValue("姓名");
    for (int j = 0; j < 2; j++) {
    // 定义数据从第二行开始
    row = sheet.createRow((short) j + 1);
    cell1 = row.createCell((short) 0);
    cell2 = row.createCell((short) 1);
    cell1.setEncoding((short) 1);
    cell1.setCellType(1);
    cell2.setEncoding((short) 1);
    cell2.setCellType(1);
    // 填充内容
    cell1.setCellValue(term_id[j]);
    cell2.setCellValue(name[j]);
    }
    wb.write(fos);
    fos.flush();
    fos.close();

    catch (Exception e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();


    }
      

  7.   

    POI 就可以,将 POI 的代码写在 <% %>里面,不过建议楼主还是用点框架吧,struts都发明10年了,你还在 jsp里面写代码。
      

  8.   

    用POI做导出Excel 是个不错的选择
    建议楼主试试。
      

  9.   

    乱?怎么个乱法?用表格控制了。不行的话就用poi了。基本如下,具体的查资料吧 ...
     HSSFSheet sheet;//Excel电子表格的页
     HSSFRow  sheetRow;// 行
     HSSFCell cell;//单元格
     sheet = wb.createSheet("test");//创建页
     sheet.setDefaultColumnWidth((short)12);//设置默认列宽
     cell = getCell(sheet,0,0);//定位表格 A1
     cell.setEncoding(HSSFCell.ENCODING_UTF_16);//支持中文
     setText(cell,"the first test");
     
     List words = ...
     for(int i=0;i<words.size;i++){
     cell =getCell(sheet,2+i,0);
    setText(cell,words.get(i);
    }
      

  10.   

    把你的数据都放到table中哪会乱,我都做过
      

  11.   

    把你哦的格式先用excel做好,然后另存为.xml格式的数据,然后在文件头上加上这个<%@ page contentType="application/vnd.ms-excel; charset=gb2312"%> ,就可以了。然后在各个地方填好你要的数据,就可以下载指定格式的文件了
      

  12.   

    这个应该是把查出来的数据先保存到服务器上,然后下载到客户端。如果表中存的是字符串或int型的话,可以试一下下面这种导出。
    try{
    String filepath = i_stationinfodeal.writeStationToExcel(sql, select_station_notrim);
    File f = new File(filepath);
    String downFilename = "station.xls";//要下载的文件名称

    response.setContentType("text/plain");
    response.setHeader("Location",downFilename);
    response.setHeader("Content-Disposition", "attachment; filename=" + downFilename);
    OutputStream outputStream = response.getOutputStream();
    InputStream inputStream = new FileInputStream(filepath);
    byte[] buffer = new byte[1024];
    int i = -1;
    while ((i = inputStream.read(buffer)) != -1) {
     outputStream.write(buffer, 0, i);
    }
    outputStream.flush();
    outputStream.close();
    inputStream.close();
    //outputStream = null;

    //删除文件
    f.delete();
    }
    catch(Exception e){

    }
    public String writeStationToExcel(String sql,String queryselect)
    {   
         //创建文件
    Date date = new Date();
    String filename = String.valueOf(date.getTime());
    String filepath = "c:\\"+filename+".xls";
    try{

    File f = new File(filepath); 
    f.createNewFile();
    FileOutputStream fileoutputstream = new FileOutputStream(f);
    //创建表头
    jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(fileoutputstream);   
    jxl.write.WritableSheet ws = wwb.createSheet("Station",0);
    boolean fot = false;
    int i = 0;
    int length = 0; //选择列的个数
    jxl.write.Label labelC;

    length = queryselect.split(",").length;

    String[] query = queryselect.split(",");
    for(int k=0;k<length;k++){
    labelC=new jxl.write.Label(k,0,query[k]);
    ws.addCell(labelC);
    }
     

    //查询数据库中的数据导出到excel中
         con = new ConnectionManager().getConnection();
    pst = con.prepareStatement(sql);
    rs = pst.executeQuery();
    while(rs.next()){
    for(int j=0;j<length;j++){
    String a = "";
    try{
    a=rs.getString(j+1);
    }
    catch(Exception e){
    a=String.valueOf(rs.getInt(j+1));
    }
    labelC=new jxl.write.Label(j,i+1,a);
    ws.addCell(labelC);
    }
    i++;
    fot = true;
    }
         //关闭各种流
         if(fot){
         wwb.write();
    wwb.close();
         }
         else{
         wwb.close();
         }
         fileoutputstream.close();
    }
    catch(Exception e){

    }
    finally{
    try{
    rs.close();
    pst.close();
    con.close();
    }
    catch(Exception e){
    e.printStackTrace();
    }
    }

        
         return filepath;
    }
      

  13.   

    可以将要导出的数据展示在 jsp 页面,该JSP页面头为 <%@ page contentType="application/vnd.ms-excel; charset=gb2312"%> 即可  这个方法是最简单的!