如何实现从JSP页面通过点击按钮将数据导出到excel,也可以将execl中的内容导入
跪求详细方法

解决方案 »

  1.   

    详细代码肯定是不能给你的。
    只能告诉你个我解决的思路吧。
    首先使用struts2的action接受页面发来的数据(注意这个数据建议放到一个对象当中,直接接受这个对象就可以了),导入execl在2010之后可以用POI的方式,2010之前的可以选择lxt(好像是,不确定)。
    写入。
    将execl的内容导入jsp基本就差不多,传入一个对象,用foreach遍历输出应该就可以了吧。
      

  2.   

    配置一个servlet 类 
            //接收数据      //读取文件路径
         String userfile = request.getParameter("userfile");
         //上传文件的类型:1内卡,2外卡 3. 易宝交易数据(内卡),4.中行交易数据(内卡)
         String postype = request.getParameter("postype");
         String fileType = request.getParameter("fileType");      Timestamp now = new Timestamp(System.currentTimeMillis());      File read = new File(userfile);
        
           //固定数据
            //
            //java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
            //DecimalFormat idf = new DecimalFormat("#,###");
            DecimalFormat ddf = new DecimalFormat("#,##0.00");
            //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //max num of per sheet:min( sheetMaxRowNum ,MAX_ROW_NUM_OF_EXCEL)
            int sheetMaxRowNum = 30001;         //total sheet num
            int totalSheetNum = 0;
            //total row num
            int totalRowNum = 0;         //creat workbook
            jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(response.getOutputStream());
            //define sheet
            jxl.write.WritableSheet ws = null;         //set font format for title
            jxl.write.WritableFont ww = new jxl.write.WritableFont(WritableFont.TAHOMA, 11, WritableFont.BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE);
            jxl.write.WritableCellFormat wwf = new jxl.write.WritableCellFormat(ww);         //set font format for content
            jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
            jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
      

  3.   

    用poi来操作excel吧。导入就是poi读取excel的每个单元格,然后把数据存进数据库。
    导出就是上面的逆过程
      

  4.   

    JXL或者POI,搜一下,应该很多例子的!
      

  5.   

    Apache POI 很多例子,导入时excel格式固定很容易实现
      

  6.   

    jxl 现在在公司的应用挺多  我也正在学习这个
      

  7.   

    POI,建议楼主到verycd上去收有个人的视频专门讲解了POI的使用!!
      

  8.   

    我之前做过导出功能 用的是jxl  楼主可以去我播客里看看 在fusionchart不规则xml的dom4j和正则解析这篇文章里有 jxl写Excel文件的实现 读的话应该也有相应的方法 楼主可以找API参考一下
      

  9.   

    无非就是poi和jxl,个人推荐poi3.7
    支持xls和xlsx
      

  10.   

    借助apache的poi或者jxl我写了好多导入导出哦,快去看看吧
      

  11.   

    用poi比jxl要好!我都是用的poi来做导出的!也比较简单,创建一个HSSFWorkbook对象再输入行、列,数据,就完了!google一下有很多,我贴段代码给你!
    private HSSFWorkbook fillDataToExcel(List<AppDownload> list, HttpServletResponse response){
    HSSFWorkbook workbook = null;
    try{
    if(null != list && list.size() > 0){
    workbook = new HSSFWorkbook();
    HSSFSheet sheet = workbook.createSheet("Sheet1");
    HSSFRow row = sheet.createRow(0);
    row.setHeight((short)300);
    this.setColumnWidth(workbook, sheet, 0);
    this.setColumnWidth(workbook, sheet, 1);
    this.setColumnWidth(workbook, sheet, 2);
    this.setColumnWidth(workbook, sheet, 3);
    this.setColumnWidth(workbook, sheet, 4);

    this.createTitleCell(workbook,row,  0, "编号");
    this.createTitleCell(workbook,row,  1, "游戏名称");
    this.createTitleCell(workbook,row,  2, "下载数");
    this.createTitleCell(workbook,row, 3, "分值");
    this.createTitleCell(workbook,row,  4, "接入时间");
    HSSFCellStyle style = workbook.createCellStyle();
    HSSFFont font = workbook.createFont();
    AppDownload app = null;
    for(int i = 0; i < list.size(); i++){
    app = list.get(i);
    row = sheet.createRow(i+1);
    this.createCell(workbook,row, style,font, 0, String.valueOf(app.getId()));
    this.createCell(workbook,row, style, font,1, app.getAppName());
    this.createCell(workbook,row, style,font, 2, String.valueOf(app.getDownCount()));
    this.createCell(workbook,row, style,font, 3, String.valueOf(app.getAppScore()));
    this.createCell(workbook,row, style,font, 4, app.getAppRegtime());
    }
    row = sheet.createRow(list.size()+2);
    this.createTitleCell(workbook,row,   0, "总计");
    this.createCell(workbook,row, style, font, 1, "--");
    this.createTitleCell(workbook,row, 2, list.size() > 0 ? String.valueOf(app.getDownTotal()) : String.valueOf(0));
    this.createCell(workbook,row, style,font, 3, "--");
    this.createCell(workbook,row, style,font, 4, "--");
    } else {
    this.getPrintWrite(response, "请先执行查询操作后再导出数据");
    return null;
    }
    } catch(Exception ex){
    ex.printStackTrace();
    }
    return workbook;
    }
    最后再用outputstream来输入就OK了!private void downloadExcel(HSSFWorkbook workbook, HttpServletResponse response, String fileName){
    try{
    OutputStream output = response.getOutputStream();
    response.setHeader("Content-disposition", "attachment;filename="+URLEncoder.encode(fileName,"utf-8"));
    response.setContentType("application/msexcel;charset=UTF-8");
    workbook.write(output);
    } catch (IOException ex){
    ex.printStackTrace();
    }

    }
      

  12.   

    上面有个错别字:是用outputstream来输出,首先调用fillDataToExcel()传入一个要导出的数据,一个response对象,最后调用downloadExcel()传一个fillDataToExcel()返回的对象,一个response对象,一个excel的文件名!