要求做一个从网页上导入excel
要求做一个从网页上导入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(" ");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相关推荐
- 做一个简单网页(做一个简单网页多少钱)
怎样做一个简易的网页?做一个简单网页多少钱 做一个简易的普通网页比较容易.当然,制作的方法有好几种,有的是直接写代码.有的是用绘图软件绘制页面再导出网页.常用的是使用网页制作软件做网页.下面以普通静态 ...
- 网页数据导入excel的问题
网页数据导入excel共分三步: 第一步:建立EXCEL.JS文件 ====文件的代码========= var idTmr = ""; function copy(tabi ...
- 网页数据导入excel问题介绍
转自:微点阅读 https://www.weidianyuedu.com 网页数据导入excel共分三步: 第一步:建立EXCEL.JS文件 ====文件的代码========= var idTm ...
- Web项目,网页上传excel文件并解析实战示例
最近写了一个基于poi解析excel文件的工具类,所以想在web项目中测试一下,就做了这个简单的项目.本项目主要使用了 SpringMVC+RESTful+Maven的风格.适合有一定基础的人员. 源 ...
- 如何做一个自适应网页
如何做一个自适应网页? 1.允许网页宽度自动调整 <meta name="viewport" content="width=device-width, initia ...
- 一步步做一个Google 网页
一步步做一个Google 网页 做一个Google 图标 其实谷歌很用心的在做每一个Google图标.然而我太懒,搞了个简单的. h1{font-size:100px; color:#5f5f61; ...
- Java怎么做一个简单网页呢?
学java的同学在接触到Java web开发之后都跃跃欲试想要尝试自己开发一个页面,那么应该如何操作呢?都需要使用到哪些技术呢?下面小千就来告诉你. 需要使用到的技术 java 语言知识, jsp 知 ...
- java如何做网页_java怎么做一个简单网页?网页包括什么?
学了java程序之后,大家就可以将这些运用到生活中去,比如做一个简单的网页.正好也可以检测自己学了怎么样,那么接下来,我们就来给大家讲解一下这方面的内容. 用Java语言编写实现一个简单的WEB浏览器 ...
- 做一个前端网页送给女朋友~轮播图+纪念日
文章目录 1. 轮播图框架 2. 轮播图大盒子实现 1. 盒子及图片的可视化 2. 将图片重叠起来并放入轮播图盒子中 ...相对定位与绝对定位 3. 添加左右按钮 4. 点击按钮跳转图片 5. 鼠标离 ...
最新文章
- Gradle入门系列(4):创建二进制发布版本
- hihocoder1718 最长一次上升子序列
- SQL Compare
- 你很烫吗?我很烫——关于栈区和静态存储区的思考
- ComponentBase.createMetaData and manifest.json oRoute
- thinking in java(第七章)
- 四、处理表单数据 (基础教程4)
- 狂砸250多亿!亚马逊花了7年时间,造了一个让你自愿加班到死的办公室!
- 软件编码测试要点总结
- IPD开发流程TR1-TR6各个阶段简介
- BMP JPEG 图片转换为矢量图像 ContourTrace
- 欧姆龙服务器显示oE,欧姆龙OPC服务器(OMRON OPC Server) v1.0免费版
- 美区苹果id关闭双重认证_双重认证
- E php短信平台接口
- 消息队列 RocketMQ应用场景之削峰填谷
- 联合舰队的覆灭(7)
- Zotero实现双电脑+云端同步—Zotfile、坚果云
- 北都南, 神月あおい - 小悪魔lovers
- Pr:Lumetri 范围
- 学习经验分享之八:EI检索查询
热门文章
- java多线程中出现的异常分别有哪些_java多线程试题
- k8s挂载目录_K8S中挂载目录引发的血案!
- ENSP配置 实例九 动态Nat配置
- java list 超出范围_java-列索引超出范围:2,列数1
- javascript V8引擎垃圾收集机制
- pycharm无法导入Pillow
- python视频提取音频_python脚本实现mp4中的音频提取并保存在原目录
- jenkins 安装插件失败_Jenkins 自动化安装插件
- android 跟随动画,Android实现View拖拽跟随手指移动效果
- python删除txt指定内容_正则表达式使用python从文件中过滤和删除特定的多行文本...