关键词:
文章目录
jsp使用webuploader上传excel mysql导入导出 apache-poi
关键词:jsp,webuploader,excel上传导入导出,mysql
目标
- 让excel上传到服务器并让插入数据到数据库
- 如果需要下载则将数据库中的数据导出成excel并成功让用户下载
效果
大致思路
前端实现:layui,webuploader,jsp
后端实现:apache.poi,mysql,servlet,fastjson,commons-io
日志组件:slf4j,log4j
前端使用layui来实现,用webuploader
作上传组件上传excel,用apache-poi
操作excel导入和导出,编写了一个工具类ExcelUtil
最开始从add.jsp
开始,需要上传就到uploadservlet
中,操作是将excel传到服务器并且存入数据库中(我加了一个id字段)
list.jsp
即查看数据库中有多少个excel表格,数据是从data.jsp中传入的
如果需要下载则通过downloadservlet
生成excel并下载
现在的我后知后觉,应该把那些顶部的abcde…设成字段,傻了傻了
代码
util
excelUtil
excel工具类
package top.sehnsucht.utils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import top.sehnsucht.dao.ExcelDao;
import top.sehnsucht.dao.impl.ExcelDaoImpl;
import top.sehnsucht.service.ExcelService;
import top.sehnsucht.service.impl.ExcelServiceImpl;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
/**
* @Description: excel工具类
* @Author: Cai
* @CreateTime: 2021/11/19
*/
public class ExcelUtil
/**
* 将name文件从数据库中读取出来
* @throws IOException
*/
public static void createExcelFile(String name, String path) throws Exception
ExcelDao dao = new ExcelDaoImpl();
ArrayList<ArrayList<String>> allList = dao.dataToExcel(name);
File excelFile = new File(path);
if (!excelFile.exists())
excelFile.mkdirs();
Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet();
CellStyle cellStyle = wb.createCellStyle();
// 字体
Font font = wb.createFont();
font.setFontName("等线");
font.setFontHeightInPoints((short) 20);
cellStyle.setFont(font);
for (int i = 0; i < allList.size(); i++)
// 3、创建行对象
Row row = sheet.createRow(i);
for (int j = 0; j < allList.get(i).size(); j++)
Cell cell = row.createCell(j);
cell.setCellValue(allList.get(i).get(j));
cell.setCellStyle(cellStyle);
OutputStream os = new FileOutputStream(path + "\\\\" + name + ".xls");
wb.write(os);
os.close();
/**
* 将filePath的文件存入数据库
* @param name
* @param filePath
* @throws IOException
*/
public static void readExcelFile(String name, String filePath) throws IOException
ExcelDao dao = new ExcelDaoImpl();
ExcelService service = new ExcelServiceImpl(dao);
File xlsFile = new File(filePath);
// 工作表
Workbook workbook = WorkbookFactory.create(xlsFile);
// 表个数。
int numberOfSheets = workbook.getNumberOfSheets();
// 遍历表。
for (int i = 0; i < numberOfSheets; i++)
Sheet sheet = workbook.getSheetAt(i);
// 行数。
int rowNumbers = sheet.getLastRowNum() + 1;
// Excel第一行。
Row temp = sheet.getRow(0);
if (temp == null)
continue;
int cells = temp.getPhysicalNumberOfCells();
ArrayList<String> list = new ArrayList<String>();
// 读数据。
for (int row = 0; row < rowNumbers; row++)
if (row == 0)
Row r = sheet.getRow(row);
for (int col = 0; col < cells; col++)
if (r.getCell(col) == null)
list.add("null");
else
list.add(r.getCell(col).toString());
System.out.println(list);
service.createExcel(name,list);
continue;
ArrayList<String> data = new ArrayList<String>();
Row r = sheet.getRow(row);
for (int col = 0; col < cells; col++)
if (r.getCell(col) == null)
data.add("null");
else
data.add(r.getCell(col).toString());
service.addExcel(name,list,data);
DBUtil
package top.sehnsucht.utils;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.log4j.Logger;
/**
* @Description:
* @Author: Cai
* @CreateTime: 2021/10/29
*/
@Slf4j
public class DBUtil
// 定义数据库连接参数
public static final String DRIVER_CLASS_NAME = "com.mysql.cj.jdbc.Driver";
public static final String URL = "jdbc:mysql://localhost:3306/excel";
public static final String USERNAME = "root";
public static final String PASSWORD = "818181";
// 注册数据库驱动
static
try
Class.forName(DRIVER_CLASS_NAME);
catch (ClassNotFoundException e)
e.printStackTrace();
// 获取连接
public static Connection getConn() throws SQLException
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
// 关闭连接
public static void closeConn(Connection conn)
if (null != conn)
try
conn.close();
catch (SQLException e)
System.out.println("关闭连接失败!");
e.printStackTrace();
//测试
public static void main(String[] args) throws SQLException
System.out.println(DBUtil.getConn());
servlet
DownloadServlet
package top.sehnsucht;
import org.apache.log4j.Logger;
import top.sehnsucht.dao.ExcelDao;
import top.sehnsucht.dao.impl.ExcelDaoImpl;
import top.sehnsucht.service.ExcelService;
import top.sehnsucht.service.impl.ExcelServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Description:
* @Author: Cai
* @CreateTime: 2021/11/20
*/
public class DownloadServlet extends HttpServlet
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
Logger logger = Logger.getLogger(this.getClass());
String path = req.getSession().getServletContext().getRealPath("/") + "\\\\excel";
String name = req.getParameter("name");
logger.info(path);
logger.info(name);
ExcelDao dao = new ExcelDaoImpl();
ExcelService service = new ExcelServiceImpl(dao);
service.DataToExcel(name,path);
resp.setContentType("application/vnd.ms-excel");
req.getRequestDispatcher("/excel/" + name + ".xls").forward(req,resp);
req.getRequestDispatcher("/list").forward(req,resp);
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
doGet(req, resp);
JDBCServlet
package top.sehnsucht;
import org.apache.log4j.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
public class JDBCServlet extends HttpServlet
private Logger logger = Logger.getLogger(this.getClass());
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
String strBackUrl = "http://" + req.getServerName() + ":" + req.getServerPort() + "/list.jsp";
resp.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
resp.setHeader("Location", strBackUrl);
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
doGet(req, resp);
Log4jServlet
package top.sehnsucht;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.PropertyConfigurator;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import java.io.File;
/**
* @Description:
* @Author: Cai
* @CreateTime: 2021/11/12
*/
public class Log4JInitServlet extends HttpServlet
@Override
public void init(ServletConfig config) throws ServletException
System.out.println("Log4JInitServlet 正在初始化 log4j日志设置信息");
String log4jLocation = config.getInitParameter("log4j-properties-location");
ServletContext sc = config.getServletContext();
String str= sc.getInitParameter("test");
System.out.println("str:"+str);
if (log4jLocation == null)
System.err.println("*** 没有 log4j-properties-location 初始化的文件, 所以使用 BasicConfigurator初始化");
BasicConfigurator.configure();
else
String webAppPath = sc.getRealPath("/");
String log4jProp = webAppPath + log4jLocation;
File yoMamaYesThisSaysYoMama = new File(log4jProp);
if (yoMamaYesThisSaysYoMama.exists())
System.out.println("使用: " + log4jProp+"初始化日志设置信息");
PropertyConfigurator.configure(log4jProp);
else
System.err.println("*** " + log4jProp + " 文件没有找到, 所以使用 BasicConfigurator初始化");
BasicConfigurator.configure();
super.init(config);
uploadServlet
package top.sehnsucht;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.log4j.Logger;
import top.sehnsucht.utils.ExcelUtil;
importjsp利用webuploader实现超大文件分片上传断点续传
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。第一步:前端修改由于项目使用的是BJUI前端框架,并... 查看详情
使用webuploader和servlet实现文件上传
...POST请求封装成Part,通过Part对上传的文件进行操作。3、WebUploader参照网上教程实现。4、引入webuploader.css、webuploader.js、Uploader.swfupload.jsp: < 查看详情
webuploader文件图片上传插件的使用(代码片段)
最近在项目中用到了百度的文件图片上传插件WebUploader。分享给大家需要在http://fex.baidu.com/webuploader/download.html点击打开链接下载WebUploader//初始化WebUploader***上传图片 varuploader=WebUploader.create( //选完文件后,是否自动上传。 ... 查看详情
vue移动端图片上传,可最多上传9张,使用webuploader插件
参考技术A图片上传WebUploader.js 查看详情
使用webuploader插件上传图片时如果正确限制上传数量
参考技术Aphp.ini:upload_max_filesize所上传的文件的最大大小。默认值2M。 查看详情
大文件上传组件webupload插件
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。第一步:前端修改由于项目使用的是BJUI前端框架,并... 查看详情
如何让webuploader上传之前进行验证
参考技术Awebuploader如何上传使用java方法/步骤1使用webuploader页面如下2点击上传按钮,或者复制粘贴或者拖拉图片导下面区域里都可以上传图片3点击上传,java代码如下。servlet里的dopost方法4点击上传后,图片会存入你写入的文件... 查看详情
jfinal+webuploader实现图片的异步上传(代码片段)
关于WebUploader##WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。界面友好,使用方便,稍作修改,可快速上手。官网:http://fex.baidu.com/webuploader/如何使用webuploader到官... 查看详情
使用webuploader插件上传图片时如果正确限制上传数量
//初始化WebUploader uploader=WebUploader.create( //自动上传。 auto:true, //swf文件路径 swf:'__PUBLIC__/Home/swf/Uploader.swf', //文件接收服务端。 server:'#:U('Feedback/uploadimg')#', //选择文件的按钮。可选。 //内部根据当前运行是... 查看详情
使用webuploader实现图片上传(代码片段)
...inkrel="stylesheet"type="text/css"href="js/webuploader-0.1.5/webuploader.css"><scripttype="text/javascript"src="js/jquery.min.js"></script><scripttype="text/javascript"src="js/webuploader-0.1.5/webuploa... 查看详情
用webuploader怎么解决跨域上传文件的问题
参考技术A最近研究了下大文件上传的方法,找到了webuploaderjs插件进行大文件上传,大家也可以参考这篇文章进行学习:《WebUploader文件上传插件使用详解》使用使用webuploader分成简单直选要引入<!--引入CSS--><linkrel="style... 查看详情
webuploader怎么只能上传一个文件
使用webuploader点击传按钮或者复制粘贴或者拖拉图片导面区域都传图片点击传java代码servletdopost点击传图片存入写入文件夹需要注意需要修改js文件请求台路径前段代码需要源码复参考技术Apick下的属性multipleBoolean是否开起同时选... 查看详情
java使用webuploader做大文件的分块和断点续传
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。第一步:前端修改由于项目使用的是BJUI前端框架,并... 查看详情
asp.netmvc之图片上传,webuploader多实例上传疑问,在这里轻松解决!(代码片段)
...,在处理图片上传功能上遇到了一道坎。之前是使用webuploader插件实现图片上传,但在处理多实例问题时,一直难以跨过。几经思索,再次踏上了学习之路。疑难问题1.在之前使用webuploader时,在处理多图上传问题上... 查看详情
webuploader.js上传的几种情况
最近的项目中用到webUploader的地方比较多,总结了几种图片上传的情况。必要的引用<linkhref="~/Scripts/webuploader-0.1.5/webuploader.css"rel="stylesheet"/><scriptsrc="~/Scripts/webuploader-0.1.5/webuploader.min.js"></script 查看详情
webuploader上传错误怎么捕捉
...:uploader.on('error',function(handler)alert(handle););刚使用webuploader,也是调试了好久。 参考技术B捕获文件上传中的错误代码如下:代码.javascript-webUploader上传文 查看详情
webuploader分片上传的实现代码(前后端分离)
参考技术A本文介绍了webuploader分片上传的实现代码(前后端分离),分享给大家,具体如下:WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势... 查看详情
上传控件webuploader判断有没有上传成功
参考技术A或将照片拖到这里,单次最多可选30张0%开始上传 查看详情