最近遇到了需要上传excel文件,并将excel表中的数据都出来,存到数据库中的需求,今天将步骤整理一下,如下:

一、新建一个html(或jsp页面),如:uploadExcel.html,代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>导入Excel表</title>
<meta http-equiv="Content-Type" content="text/html; charset=gbk"></head>
<body class="dialogBody"><div><form id="form2" method="post" action="../../uploadExcel"enctype="multipart/form-data" style="align: center"><table width="100%" border="0" cellspacing="0" cellpadding="6" class="blockTable"><tr><td></td></tr><tr><td align="center"><h2>选择Excel表:</h2></td><td align="center"><div><input type="file" name="file_upload"  /></div></td></tr><tr><td align="center"><input type="submit" name="submit" value="上传" /></td></tr><tr></tr><tr></tr><tr></tr></table></form></div>
</body>
</html>

2、在web.xml中配置servlet和servlet-mapping,代码如下:

<servlet><servlet-name>uploadExcel</servlet-name><servlet-class>com.shop.upload.UploadServlet</servlet-class><init-param><param-name>filePath</param-name><param-value>store</param-value></init-param><init-param><param-name>tempFilePath</param-name><param-value>temp</param-value></init-param></servlet><servlet-mapping><servlet-name>uploadExcel</servlet-name><url-pattern>/uploadExcel</url-pattern></servlet-mapping>

3、servlet类代码如下:

package com.upload;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;/*** 上传文件的servlet类*/
public class UploadServlet extends HttpServlet{/*** @function:Excel 表格上传*/private String filePath;  //存放上传文件的目录private String tempFilePath;//存放临时文件的目录@Overridepublic void init(ServletConfig config) throws ServletException {super.init(config);//读取初始化参数filePathfilePath=config.getInitParameter("filePath");//读取初始化参数tempFilePathtempFilePath=config.getInitParameter("tempFilePath");filePath=getServletContext().getRealPath(filePath);tempFilePath=getServletContext().getRealPath(tempFilePath);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html; charset=GBK");response.setHeader("Cache-Control", "no-cache");response.setCharacterEncoding("GBK");PrintWriter out = response.getWriter();try {//创建一个基于硬盘的FileItem工厂DiskFileItemFactory factory=new DiskFileItemFactory();//设置向硬盘写数据时所用的缓冲区的大小,暂定10M,一会再改factory.setSizeThreshold(1000*1024);//设置临时目录factory.setRepository(new File(tempFilePath));//创建一个文件上传处理器ServletFileUpload upload=new ServletFileUpload(factory);//设置允许上传的文件的最大尺寸,暂定10M,一会再改upload.setSizeMax(1000*1024);Map<String, String> params = new HashMap<String, String>();// 存放请求参数List<FileItem> items=upload.parseRequest(request);Iterator iter=items.iterator();while(iter.hasNext()){FileItem item=(FileItem) iter.next();if(item.isFormField()){processFormField(item,params);  //处理普通的表单域}else{processUploadFile(item,params);  //处理上传文件}}String path=params.get("path");int total=getExcelTotal(path);out.println("<h1 align=\"center\">点击'确认'按钮继续</h1>");out.flush();out.close();} catch (Exception e) {e.printStackTrace();out.println("<h1 align=\"center\">上传出错--点击'取消'按钮</h1>");out.flush();out.close();}}/*** 获得excel中数据总数* @param path* @return*/public int getExcelTotal(String path) {final Sheet sheet;final Workbook book;int total=0;try {// t.xls为要读取的excel文件名book = new VillageHouses().getWorkBookObject(path) ;// 获得第一个工作表对象(ecxel中sheet的编号从0开始,0,1,2,3,....)sheet = book.getSheetAt(0) ;total = sheet.getLastRowNum() ;} catch (Exception e) {e.printStackTrace();}return total;}/*** 处理上传文件* @param item* @param params* @throws IOException*/private void processUploadFile(FileItem item, Map<String, String> params) throws IOException {createFileDirectory(filePath);String fileName = item.getName() ;String fileType = fileName.substring(fileName.lastIndexOf("."), fileName.length());long time = System.currentTimeMillis();// 时间毫秒数String savePath = filePath +"/"+ time + fileType;System.out.println("服务器文件路径:"+savePath);InputStream inputStream = item.getInputStream();// 获取文件流FileOutputStream outputStream = new FileOutputStream(savePath);// 创建输出流byte[] tyte = new byte[1024];int len = 0;while ((len = inputStream.read(tyte)) > 0) {outputStream.write(tyte, 0, len);}inputStream.close();outputStream.close();item.delete();// 删除临时文件params.put("path", savePath);}/*** 处理表单数据* @param item* @param params*/private void processFormField(FileItem item, Map<String, String> params) {String name=item.getFieldName();//获得表单域的名字String value=item.getString(); //获得表单域的值if("xqid".equals(name))params.put("xqid", value);if("id".equals(name))params.put("id", value);}/*** 判断项目所在服务器上的文件夹是否创建* @param path*/private void createFileDirectory(String path) {File file = new File(path);if (!file.exists()) {// 创建文件夹file.mkdirs();}}}

这个就是jsp负责页面,servlet负责实现具体的上传功能,代码中有标注,很简单,应该都可以看懂

上传excel文件到服务器相关推荐

  1. 上传excel文件到服务器,excel怎么上传到云服务器

    excel怎么上传到云服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安 ...

  2. 服务器上传excel文件并读取数据,asp.net上传Excel文件并读取数据的实现方法

    前言 本文主要给大家介绍了关于asp.net上传Excel文件并读取数据的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 实现如下: 前台代码:使用服务端控件实现上传 服务端 ...

  3. 实现web前端上传excel文件到flask服务器

    这里有两种方法:1. html方式:2. javascript方式(jQuery+ajax) 第1种方法:html方式 这种方法直接通过设计form表单相关属性实现将excel表格上传到服务器,并在服 ...

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

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

  5. 一行js_Node.js 一行命令上传本地文件到服务器

    每次打包完, 都要打开 FileZilla 一顿拖拽然后才能上传代码, 那就立马撸一个自动化脚本就完事了 publish-sftp Github 传送门(~~~~顺便来骗个Star~~~~) 以后一行 ...

  6. Django框架(上传Excel文件并读取)

    博主今天整理下Django框架中上传Excel文件并读取 博主是要在管理平台中新增用例的维护功能,想着通过上传Excel文件来展示用例,下面是项目的路径图: 首先先建数据库模型 model.py 可以 ...

  7. php上传查询excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例

    PHP上传Excel文件导入数据到MySQL数据库示例2020-06-20 00:34:11 最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里 ...

  8. 移动端上传大文件到服务器,android上传大文件到服务器地址

    android上传大文件到服务器地址 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器 ...

  9. php 上传excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例

    最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里面的数据内容到MySQL数据库的小程序. 要用到的工具: ThinkPHP:轻量级国产PHP开 ...

最新文章

  1. 项目日志2-系统降级模块设计
  2. php-函数小知识点
  3. linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例
  4. BZOJ 2124 等差子序列 线段树维护哈希
  5. session登录状态保持html,Flask使用Session和上下文处理器保持登录状态
  6. apt-get无法获取kubelet kubeadm kubectl包
  7. bat 中 for 的使用 帮助文档 中文版
  8. WPF简单实用方法(持续更新)
  9. css实现时间数字特效字体格式
  10. Win10远程控制别人电脑的操作方法
  11. X1000对于CPU Core的参数解读(MIPS Cache)
  12. 微信小程序 nodejs+vue校园学生社团管理系统
  13. 深度学习之语义分割unet算法解读
  14. SCORM学习交互开发
  15. 中国城市人口排名(最新版)
  16. MZOJ #82 总统竞选
  17. 零点起飞学Visual Basic pdf
  18. 计算字符串长度(可同时字母和汉字,字母占一个字符,汉字占2个字符)
  19. 电脑上被误删的文档怎么恢复?4个实用妙招解决
  20. HIVE中ROW_NUMBER()函数的讲解

热门文章

  1. VC、PE和天使投资是什么意思?有什么区别?
  2. ElasticSearch 布尔查询
  3. python爬取新浪财经的股票信息
  4. 为什么eolinker发送老是等待_eolinker使用有感
  5. GIMP入门-张抿轩-专题视频课程
  6. Verilog基础知识(数值表示总结,signed,原码,反码,补码)
  7. 一代宗师医疗集团——推进医养结合 助力健康养老
  8. 二叉树的基本概念及性质
  9. PPP模式将在智慧城市领域铺开
  10. Xml数据导入MySQL,SQLite等数据库