要求做一个从网页上导入excel,,开始着手去实现它。

思路很简单:

1、做一个jsp页面,页面包括浏览文件,提交文件

2、将excel文件上传到服务器

3、  服务器对该excel文件进行读出

4、  将excel文件内容显示到页面上

环境搭建:

需要准备的包:commons-fileupload-1.2.1.jar & commons-io-1.3.2.jar 这两个包是上传用的

jxl.jar 这个包是读取excel用的 下载地址 :http://sourceforge.net/projects/jexcelapi/  建议不要用新版本,因为新版本会出现与jdk版本兼容问题,如果运行程序出现问题的时候请切换旧版本。

一、Jsp页面

注意:1、在jsp页面的form要使用html本身的<form>标记,而不要使用第三方视图开源框架的form标记,例如不要使用strut的<htm:form>。

   2、在<form>的属性里必须加上  ENCTYPE="multipart/form-data"

1   <h1>导入Excel</h1>2   <hr>3   <form action="importExcel" method="post" enctype="multipart/form-data">4   <input type="file" name="importExcel" id="importExcel">5   <input type="submit" value="导入">6   </form> 

二、上传excel的Servlet

注意:1、导入的excel最好用后缀为.xls,如果用.xlsx可能会导不进去。

2、在调用FileItem的write方法前必须保证文件的存放路径存在否则出现异常。commons fileupload不会自动为你建立不存在的目录。

3、上传后会对文件进行重命名,以时间为文件名进行命名

  1  public class Import ExcelServlet extends HttpServlet {  2   //缓冲区域  3     File tempPathFile;  4   //默认路径  5    String uploadTo ="D:\\";  6   // 支持的文件类型  7    String[] errorType = { ".xls" };  8  //格式化日期  9     SimpleDateFormat format =new  SimpleDateFormat("yyyyMMddHHmmssSSS"); 10    @Override 11   protected void doGet(HttpServletRequest req, HttpServletResponse resp) 12   throws ServletException, IOException 13    { 14        req.setCharacterEncoding("utf-8"); 15        resp.setCharacterEncoding("utf-8"); 16         //取得服务器真实路径 17         uploadTo =    req.getSession().getServletContext().getRealPath("\\") +"upload\\"; 18         // Create a factory for disk-based file items 19         DiskFileItemFactory factory =new DiskFileItemFactory(); 20         // 设置缓冲区大小,这里是4kb 21         factory.setSizeThreshold(4096); 22         // 设置缓冲区目录 23         factory.setRepository(tempPathFile); 24         // Create a new file upload handler 25         ServletFileUpload upload =new ServletFileUpload(factory); 26         // Set overall request size constraint 27 // 设置最大文件尺寸,这里是4MB 28         upload.setSizeMax(4*1024*1024);  29         // 开始读取上传信息 30         List fileItems =new ArrayList(); 31         try 32          { 33                 fileItems = upload.parseRequest(req); 34          }  35         catch (FileUploadException e1)  36          { 37               e1.printStackTrace(); 38           } 39          // 依次处理每个上传的文件 40          Iterator iter = fileItems.iterator(); 41          System.out.println("fileItems的大小是"+ fileItems.size()); 42          // 正则匹配,过滤路径取文件名 43           String regExp =".+\\\\(.+)$"; 44           Pattern p = Pattern.compile(regExp); 45           while (iter.hasNext())  46           { 47               FileItem item = (FileItem) iter.next(); 48               // 忽略其他不是文件域的所有表单信息 49               System.out.println("正在处理"+ item.getFieldName()); 50               if (!item.isFormField()) 51                { 52                     String name = item.getName(); 53                     long size = item.getSize(); 54                     if ((name ==null|| name.equals("")) && size ==0) 55                             continue; 56                     Matcher m = p.matcher(name); 57                     boolean result = m.find(); 58                     if (result) 59                     { 60                          boolean flag =false; 61                          for (int temp =0; temp < errorType.length; temp++)  62                          { 63                               if(m.group(1).endsWith(errorType[temp])) 64                                { 65                                         flag =true; 66                                 } 67                           } 68                            if(!flag) 69                            { 70                                 System.out.println("上传了不支持的文件类型"); 71                                  thrownew IOException(name +": wrong type"); 72                            } 73                            try { 74                                     String fileName = uploadTo + format.format(new Date()) + m.group(1).substring(m.group(1).indexOf(".")); 75                                      item.write(new File(fileName)); 76                                       //调用ReadExcel类进行读出excel 77                                       ReadExcel.readExcel(fileName, resp.getWriter()); 78                                       System.out.println(name +"\t\t"+ size); 79                                   }  80                             catch (Exception e) 81                             { 82                                  e.printStackTrace(); 83                             } 84                    } 85               }  86            else  87              { 88                  // 这里添加对不是上传文件表单项的处理 89                  System.out.println("这是一个表单项"); 90              } 91          } 92        } 93     @Override 94      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 95       { 96            doGet(req, resp); 97       } 98     @Override 99      public  void init() throws ServletException 100      {101          tempPathFile =new File("d:\\temp\\buffer\\");102          if (!tempPathFile.exists())103          {104                tempPathFile.mkdirs();105          }106       } 107   }

三、读出excel文件内容的类

 1   public class ReadExcel  2   { 3       public staticvoid readExcel(String pathname, PrintWriter out)  4       { 5           try { 6           //打开文件 7           Workbook book = Workbook.getWorkbook(new File(pathname)) ; 8            //取得第一个sheet 9           Sheet sheet = book.getSheet(0);10            //取得行数11           int rows = sheet.getRows();12           for(int i =0; i < rows; i++) 13           {14               Cell [] cell = sheet.getRow(i);15               for(int j=0; j<cell.length; j++)16               {17                  //getCell(列,行)18                  System.out.print(sheet.getCell(j, i).getContents());19                  System.out.print("&nbsp;");20               }21                  System.out.println("<br/>");22           }23           //关闭文件24           book.close();25        }26       catch (BiffException e)27       {28            e.printStackTrace();29       }30       catch (IOException e)31       {32           e.printStackTrace();33        } 34   }

转载于:https://www.cnblogs.com/ayan/archive/2011/12/30/2308042.html

要求做一个从网页上导入excel相关推荐

  1. 做一个简单网页(做一个简单网页多少钱)

    怎样做一个简易的网页?做一个简单网页多少钱 做一个简易的普通网页比较容易.当然,制作的方法有好几种,有的是直接写代码.有的是用绘图软件绘制页面再导出网页.常用的是使用网页制作软件做网页.下面以普通静态 ...

  2. 网页数据导入excel的问题

    网页数据导入excel共分三步: 第一步:建立EXCEL.JS文件 ====文件的代码========= var  idTmr  =  ""; function copy(tabi ...

  3. 网页数据导入excel问题介绍

    转自:微点阅读  https://www.weidianyuedu.com 网页数据导入excel共分三步: 第一步:建立EXCEL.JS文件 ====文件的代码========= var  idTm ...

  4. Web项目,网页上传excel文件并解析实战示例

    最近写了一个基于poi解析excel文件的工具类,所以想在web项目中测试一下,就做了这个简单的项目.本项目主要使用了 SpringMVC+RESTful+Maven的风格.适合有一定基础的人员. 源 ...

  5. 如何做一个自适应网页

    如何做一个自适应网页? 1.允许网页宽度自动调整 <meta name="viewport" content="width=device-width, initia ...

  6. 一步步做一个Google 网页

    一步步做一个Google 网页 做一个Google 图标 其实谷歌很用心的在做每一个Google图标.然而我太懒,搞了个简单的. h1{font-size:100px; color:#5f5f61; ...

  7. Java怎么做一个简单网页呢?

    学java的同学在接触到Java web开发之后都跃跃欲试想要尝试自己开发一个页面,那么应该如何操作呢?都需要使用到哪些技术呢?下面小千就来告诉你. 需要使用到的技术 java 语言知识, jsp 知 ...

  8. java如何做网页_java怎么做一个简单网页?网页包括什么?

    学了java程序之后,大家就可以将这些运用到生活中去,比如做一个简单的网页.正好也可以检测自己学了怎么样,那么接下来,我们就来给大家讲解一下这方面的内容. 用Java语言编写实现一个简单的WEB浏览器 ...

  9. 做一个前端网页送给女朋友~轮播图+纪念日

    文章目录 1. 轮播图框架 2. 轮播图大盒子实现 1. 盒子及图片的可视化 2. 将图片重叠起来并放入轮播图盒子中 ...相对定位与绝对定位 3. 添加左右按钮 4. 点击按钮跳转图片 5. 鼠标离 ...

最新文章

  1. Gradle入门系列(4):创建二进制发布版本
  2. hihocoder1718 最长一次上升子序列
  3. SQL Compare
  4. 你很烫吗?我很烫——关于栈区和静态存储区的思考
  5. ComponentBase.createMetaData and manifest.json oRoute
  6. thinking in java(第七章)
  7. 四、处理表单数据 (基础教程4)
  8. 狂砸250多亿!亚马逊花了7年时间,造了一个让你自愿加班到死的办公室!
  9. 软件编码测试要点总结
  10. IPD开发流程TR1-TR6各个阶段简介
  11. BMP JPEG 图片转换为矢量图像 ContourTrace
  12. 欧姆龙服务器显示oE,欧姆龙OPC服务器(OMRON OPC Server) v1.0免费版
  13. 美区苹果id关闭双重认证_双重认证
  14. E php短信平台接口
  15. 消息队列 RocketMQ应用场景之削峰填谷
  16. 联合舰队的覆灭(7)
  17. Zotero实现双电脑+云端同步—Zotfile、坚果云
  18. 北都南, 神月あおい - 小悪魔lovers
  19. Pr:Lumetri 范围
  20. 学习经验分享之八:EI检索查询

热门文章

  1. java多线程中出现的异常分别有哪些_java多线程试题
  2. k8s挂载目录_K8S中挂载目录引发的血案!
  3. ENSP配置 实例九 动态Nat配置
  4. java list 超出范围_java-列索引超出范围:2,列数1
  5. javascript V8引擎垃圾收集机制
  6. pycharm无法导入Pillow
  7. python视频提取音频_python脚本实现mp4中的音频提取并保存在原目录
  8. jenkins 安装插件失败_Jenkins 自动化安装插件
  9. android 跟随动画,Android实现View拖拽跟随手指移动效果
  10. python删除txt指定内容_正则表达式使用python从文件中过滤和删除特定的多行文本...