JAVA JXL -----excel文件上传和解析

来源:互联网 发布:samplitude mac版 编辑:程序博客网 时间:2024/04/19 23:11

 Java 操作EXCEL 有比较常见的方法 一是使用开源JXL组件,另外一种是POI,POI相对应用更广泛,能够操作微软所有windows文档,但数据量大的情况下比较消耗内存,所以相对效率比较低。

这里介绍JXL的使用:

使用很方便,是需要一个jxl.jar包就能完成EXCEL的解析和生成,当然为了实现文件上传下载需要使用到apach另外个包commons-fileupdate.jar

JXL范例:

一、通过页面提交一个Excel到后台,进行数据分析与读取:

  当然其中包含文件上传,通过简单的Servlet实现:

 部分代码如下,见注释:

String tempPath = "";

 //代表一个EXCEL文件
  Workbook wb  = null;
  try {
      DiskFileUpload fu = new DiskFileUpload(); // 设置最大文件尺寸,这里是4MB

      fu.setSizeMax(4194304); // 设置缓冲区大小,这里是4kb
      fu.setSizeThreshold(4096); // 设置临时目录:
      fu.setRepositoryPath(tempPath); // 得到所有的文件:
      List fileItems = fu.parseRequest(request);
      Iterator i = fileItems.iterator(); // 依次处理每一个文件:
      while(i.hasNext()) {
         FileItem fi = (FileItem)i.next(); // 获得文件名,这个文件名包括路径:
         String fileName = fi.getName(); // 在这里可以记录用户和文件信息
        

         wb = Workbook.getWorkbook(fi.getInputStream());
         if(wb == null){
          return;
         }
         //得到excel 所有工作表
         Sheet [] sheets = wb.getSheets();
         if(sheets != null ){
         

          for(int c=0; c<sheets.length; c++){
            

            //遍历各个工作表

             Sheet s = sheets[c];
             int columns = s.getColumns();
             int rows = s.getRows();
         

            System.out.println(columns + "  " + rows);
           if(columns >0 || rows >0){
            for(int r=0; r<rows; r++){
               for(int col =0; col<columns; col++){
               //单元格getCell (行,列)
              Cell cell = s.getCell(col, r);
              System.out.print(cell.getContents()+"  -");//输出单元格数据
             }
             System.out.println();
            }
           }
          }
         }
      }
  } catch(Exception e){
  }finally{
   if(wb !=null){
    wb.close();
   }
  }

 

原创粉丝点击