JSP如何将查询出来的数据导入到excel表格中同时显示表头和列名
具体的应该如何实现 请大家来帮帮忙 谢谢了

解决方案 »

  1.   

    要导出数据到excel文件有一个简单的方法:
    先建一个excel文件,在其中设定你的格式,比如:
    姓名   学号
    张三   123
    然后另存为网页格式.html,最后把生成文件的后缀改为jsp,在jsp文件中从数据库中读取你的数据,并将读出来的数据,放在“张三”,“123”的地方;并且在jsp文件的头部加上:
    <%@page contentType="application/vnd.ms-excel;charset=GBK" %>
      

  2.   

    用JXL或POI,可以到网上找找。最简单的方法:安装Office 2003,在显示的JSP页面中点击鼠标右键,选择“导出到Microsoft Office Excel”就行了:)
      

  3.   

    回复人: yaray(雅睿,生活在别处)  
    我在 网上找了 老半天都没有找到JXL包 你能告诉 在哪里有下载的吗 ?
    或者发给我 [email protected]
      

  4.   

    to:Jgood_boy(寂寞猪宝宝)
    我那个方法简单可行,我就是用的这种方式,楼主可以试一试!
      

  5.   

    to: huyc_fly() 那个 可以是 可以啊 但是操作起来就麻烦点而已有没有点一个按钮就可以直接 导入到excel表格中的方法呢
      

  6.   

    呵呵,能有简单的我就用简单可靠的,什么jxl和poi比我这个可能有效,不过有点麻烦
      

  7.   

    http://prdownloads.sourceforge.net/jexcelapi/jexcelapi_2_5_9.zip?download这里有jxl的包下的,还有相关的API
      

  8.   

    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;      
            /**
     * @param inputFile 输入模板文件路径
     * @param outputFile 输入文件存放于服务器路径
     * @param dataList 待导出数据
     * @throws Exception
     * @roseuid:
     */
    public void exportExcelFile(String inputFile, String outputFile, List dataList) throws Exception
    {
    //用模板文件构造poi
    POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
    //创建模板工作表
    HSSFWorkbook templatewb = new HSSFWorkbook(fs);
    //直接取模板第一个sheet对象
    HSSFSheet templateSheet = templatewb.getSheetAt(1);
    //得到模板的第一个sheet的第一行对象 为了得到模板样式
    HSSFRow templateRow = templateSheet.getRow(0);

    //HSSFSheet timplateSheet = templatewb.getSheetAt(1);
    //取得Excel文件的总列数
    int columns = templateSheet.getRow((short) 0).getPhysicalNumberOfCells();
    Debug.println("columns is : " + columns);
    //创建样式数组
    HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];


    //一次性创建所有列的样式放在数组里
    for (int s = 0; s < columns; s++)
    {
    //得到数组实例
    styleArray[s] = templatewb.createCellStyle();
    }
    //循环对每一个单元格进行赋值 
    //定位行
    for (int rowId = 1; rowId < dataList.size(); rowId++)
    {
    //依次取第rowId行数据 每一个数据是valueList
    List valueList = (List) dataList.get(rowId - 1);
    //定位列
    for (int columnId = 0; columnId < columns; columnId++)
    {
    //依次取出对应与colunmId列的值
    //每一个单元格的值
            String dataValue = (String) valueList.get(columnId);
    //取出colunmId列的的style
    //模板每一列的样式
            HSSFCellStyle style = styleArray[columnId];
    //取模板第colunmId列的单元格对象
    //模板单元格对象
            HSSFCell templateCell = templateRow.getCell((short) columnId);
    //创建一个新的rowId行 行对象
    //新建的行对象 
            HSSFRow hssfRow = templateSheet.createRow(rowId);
    //创建新的rowId行 columnId列 单元格对象
    //新建的单元格对象
            HSSFCell cell = hssfRow.createCell((short) columnId);
    //如果对应的模板单元格 样式为非锁定
    if (templateCell.getCellStyle().getLocked() == false)
    {
    //设置此列style为非锁定
    style.setLocked(false);
    //设置到新的单元格上
    cell.setCellStyle(style);
    }
    //否则样式为锁定
    else
    {
    //设置此列style为锁定
    style.setLocked(true);
    //设置到新单元格上
    cell.setCellStyle(style);
    }
    //设置编码
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    //Debug.println("dataValue : " + dataValue);
    //设置值 统一为String
    cell.setCellValue(dataValue);
    }
    }
    //设置输入流
    FileOutputStream fOut = new FileOutputStream(outputFile);
    //将模板的内容写到输出文件上
    templatewb.write(fOut);
    fOut.flush();

    //操作结束,关闭文件
    fOut.close();

    }
      

  9.   

    上面的方法都是可以实现的,但是又要连接数据库搞jsp,又要写java代码,麻烦的很。而且对于页面中存在合并单元格的情况也没有更多的考虑(如果存在大量的不规则的单元格合并的情况,如何生成数组,如果单元中存在用javascript计算生成的与数据库无关的统计数据,又该如何从数据库取值)。所以说最简单的就是把你在页面上看到的东西直接倒入到Excel,要实现这个就只能选择脚本语言javascript。至于office对web支持直接保存为execl,有很大的局限性,无法支持框架,分窗体,不支持动态生成的表格等等,反正我基本上没有成功过。如果需要我这里有javascript代码,[email protected]