上传excel文件到服务器
最近遇到了需要上传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文件到服务器相关推荐
- 上传excel文件到服务器,excel怎么上传到云服务器
excel怎么上传到云服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安 ...
- 服务器上传excel文件并读取数据,asp.net上传Excel文件并读取数据的实现方法
前言 本文主要给大家介绍了关于asp.net上传Excel文件并读取数据的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 实现如下: 前台代码:使用服务端控件实现上传 服务端 ...
- 实现web前端上传excel文件到flask服务器
这里有两种方法:1. html方式:2. javascript方式(jQuery+ajax) 第1种方法:html方式 这种方法直接通过设计form表单相关属性实现将excel表格上传到服务器,并在服 ...
- Web项目,网页上传excel文件并解析实战示例
最近写了一个基于poi解析excel文件的工具类,所以想在web项目中测试一下,就做了这个简单的项目.本项目主要使用了 SpringMVC+RESTful+Maven的风格.适合有一定基础的人员. 源 ...
- 一行js_Node.js 一行命令上传本地文件到服务器
每次打包完, 都要打开 FileZilla 一顿拖拽然后才能上传代码, 那就立马撸一个自动化脚本就完事了 publish-sftp Github 传送门(~~~~顺便来骗个Star~~~~) 以后一行 ...
- Django框架(上传Excel文件并读取)
博主今天整理下Django框架中上传Excel文件并读取 博主是要在管理平台中新增用例的维护功能,想着通过上传Excel文件来展示用例,下面是项目的路径图: 首先先建数据库模型 model.py 可以 ...
- php上传查询excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例
PHP上传Excel文件导入数据到MySQL数据库示例2020-06-20 00:34:11 最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里 ...
- 移动端上传大文件到服务器,android上传大文件到服务器地址
android上传大文件到服务器地址 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器 ...
- php 上传excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例
最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里面的数据内容到MySQL数据库的小程序. 要用到的工具: ThinkPHP:轻量级国产PHP开 ...
最新文章
- 项目日志2-系统降级模块设计
- php-函数小知识点
- linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例
- BZOJ 2124 等差子序列 线段树维护哈希
- session登录状态保持html,Flask使用Session和上下文处理器保持登录状态
- apt-get无法获取kubelet kubeadm kubectl包
- bat 中 for 的使用 帮助文档 中文版
- WPF简单实用方法(持续更新)
- css实现时间数字特效字体格式
- Win10远程控制别人电脑的操作方法
- X1000对于CPU Core的参数解读(MIPS Cache)
- 微信小程序 nodejs+vue校园学生社团管理系统
- 深度学习之语义分割unet算法解读
- SCORM学习交互开发
- 中国城市人口排名(最新版)
- MZOJ #82 总统竞选
- 零点起飞学Visual Basic pdf
- 计算字符串长度(可同时字母和汉字,字母占一个字符,汉字占2个字符)
- 电脑上被误删的文档怎么恢复?4个实用妙招解决
- HIVE中ROW_NUMBER()函数的讲解