-
2021-11-26 11:12:01更多相关内容
-
java运用poi把excel导入数据库demo
2018-07-20 15:57:48java运用poi把excel数据导入到oracle数据库中,上场内容未自己写的小demo,可下载查看,不清楚的可以联系我进行帮助。 -
jsp使用POI 导入Excel到数据库
2021-01-19 09:20:54写一个excelInput.jsp页面(struts)导入文件:ExcelInputAction.java页面if(action != null && action.equals("addSave")){String path = null;String myFileName = null;FormFile file = eForm.getExcel_file...写一个excelInput.jsp页面(struts)
导入文件:
ExcelInputAction.java页面
if(action != null && action.equals("addSave")){
String path = null;
String myFileName = null;
FormFile file = eForm.getExcel_file();//取得上传的文件
System.out.println("11111111111111111111111111111111FormFile----111"+file);
try {
java.io.InputStream stream = file.getInputStream();//把文件读入
String filePath = request.getRealPath("/");//取当前系统路径
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream bos = new FileOutputStream(filePath + "/ExcelInput/" +
time);//建立一个上传文件的输出流
myFileName = file.getFileName();//上传的文件名
path = filePath+"/ReportInput/"+myFileName;//可以自己起一个文件名保存到指定的目录,现在用原文件名
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);//将文件写入服务器
}
bos.close();
stream.close();
}catch(Exception e){
System.err.print(e.getMessage());
}
message = logic.readExcelToSql(path, myFileName, eForm, userId, userLevel, userName, ip);
}
ExcelInputLogic.java
public String readExcelToSql(String url, String myFileName, ExcelImportForm form, String userId, String userLevel, String userName, String ip){
POIFSFileSystem fs = null;
HSSFWorkbook wb = null;
String message = "";
FileInputStream stream = null;
try {
// str取得excel.xls路径
stream = new FileInputStream(url);
fs = new POIFSFileSystem(stream);
wb = new HSSFWorkbook(fs);
} catch (Exception e) {
System.out.println("poi ExcelImportLogic---"+e.getMessage());
if(fs == null) {
return "";
}
} finally {
try {
stream.close();
} catch (Exception ee) {
ee.getMessage();
}
}
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = null;
HSSFCell cell = null;
row = sheet.getRow(0);
cell = row.getCell((short) 0);
String type = cell.getStringCellValue();//根据文件头判断,文件上传是否正确
if(type.equals("Excel导入")){
message = readExcelToSql(sheet)
}
return message;
}
//调用ExcelInputLogic.java的另一个方法
public String readExcelToSql(HSSFSheet sheet){
String message = null;
DbConnection db = null;
int err = 0;
int rowNum = 0;
int count = 0;
try{
db = new DbConnection();
HSSFRow row = null;
HSSFCell cell = null;
// 名称列。注意:文本列要定义变量为String类型,而数值列要定义变量为Double类型
String name = "";
// 数值列
double qy_capital;
for (i = 4; i <= rowNum; i++) {//从第5行读取数据
System.out.println("i = "+i);
row = sheet.getRow(i);
if(row == null) {//过滤掉Excel的空行
continue;
}
//1
cell = row.getCell((short) 0);
if(cell == null || cell.getStringCellValue()).trim() == ""){//判断是否为空
name = "";
}else{
name = cell.getStringCellValue();//不为空时取值
}
//2
cell = row.getCell((short) 1);
if(cell == null) {//数值列不能为空,如果为空赋值0
numberColumn = 0;
}else if(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){
message = "";
db.rollup();
return message;
}else {
qy_capital = cell.getNumericCellValue();
}
String sql = "insert into reports(name, numberColumn) values('"+name+"',"+numberColumn+")";
db.executeUpdate(sql);
}
db.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
db.close();
}
return message;
}
对应的Excel表为aaa.xls
-
poi作excel导入数据库
2019-04-07 01:04:44NULL 博文链接:https://xph.iteye.com/blog/1562678 -
一篇学会springboot用poi导入excel表全部的数据到数据库
2021-03-10 16:21:20利用HTML导入excel表中的全部数据到数据库 2.导入maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.0.0</...1.业务描述
利用HTML导入excel表中的全部数据到数据库
Gitee地址:链接: https://gitee.com/ziac/ls.最好先把准备插入的excel表的格式改一下(如代表和价格)
2.导入maven依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.0.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.0.0</version> </dependency>
3.前端代码
创建merch-upload前端页面来作为上传数据测试页面,具体就是需要注意的是:
①路径;②文件的类型为file; ③提交的type为submit属性<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="multipart/form-data"; charset="UTF-8"> <title>上传商品信息文件</title> </head> <body> <h1 th:inlines="text">文件上传</h1> <form th:action="@{/exceImport}" method="post" enctype="multipart/form-data"> <p>选择文件: <input type="file" name="file"/></p> <p><input type="submit" value="提交"/></p > </form> </body> </html> </body> </html>
4.后端代码
首先我们需要一个封装数据的pojo对象(这里用的注解还要导入lombok依赖)
@Data @AllArgsConstructor @NoArgsConstructor @Accessors(chain = true) @ToString public class Merch { private Integer id; private String name; private String packaging; //商品包装类型 private String factory; //厂家名称 private Double price; //价格 private String code; //代码 private Integer stock; //库存数 }
4.1.后端业务实现:其一
前端刚才提交的文件会找对应的路径进行提交
@Autowired private MerchService merchService; /* 导入excel全部的数据到数据库 */ @RequestMapping(value = {"/exceImport"},method = RequestMethod.POST) @ResponseBody
controller 具体业务(这是我同事的代码,好像是没问题的)
public String uploadImg(@RequestParam("file") MultipartFile file,HttpServletRequest request) { file.getContentType(); file.getOriginalFilename(); if (file.isEmpty()) { return "文件为空!"; } try { //根据路径获取这个操作excel的实例 HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream()); //根据页面index 获取sheet页 HSSFSheet sheet = wb.getSheetAt(0); //实体类集合 List<Merch> importDatas = new ArrayList<>(); HSSFRow row = null; //循环sesheet页中数据从第二行开始,第一行是标题 for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) { //获取每一行数据 row = sheet.getRow(i); Merch data = new Merch(); // data.setId(Integer.valueOf((int) row.getCell(0).getNumericCellValue())); data.setName(row.getCell(1).getStringCellValue()); data.setCode(row.getCell(2).getStringCellValue()); data.setFactory(row.getCell(3).getStringCellValue()); data.setPrice(row.getCell(4).getNumericCellValue()); data.setPackaging(row.getCell(5).getStringCellValue()); data.setStock(Integer.valueOf((int) row.getCell(6).getNumericCellValue())); importDatas.add(data); } //循环展示导入的数据,实际应用中应该校验并存入数据库 for (Merch imdata : importDatas) { merchService.saveMerch(imdata); System.out.println("ID:"+imdata.getId()+" name:"+imdata.getName()+" Code:"+imdata.getCode()+" Factory:"+imdata.getFactory() +"Pagkage:"+imdata.getPackaging()+"Price:"+imdata.getPrice()+"Stock:"+imdata.getStock()); } } catch (Exception e) { e.printStackTrace(); } return "导入成功!"; }
4.2.后台业务实现:其二
controller 具体业务(这段代码是我的,但是有个小bug,生成的临时文件不能删除!)
id 我数据库设置的是自增所以不需要写上,避免混乱public String uploadAndBatchImport(@RequestParam("file")MultipartFile file, HttpServletRequest request) { FileInputStream is; File myFile; try { myFile = new File("G:\\Google" + UUID.randomUUID() + file.getOriginalFilename()); file.transferTo(myFile); is = new FileInputStream(myFile); List<Merch> merchs = new ArrayList<>(); //编写解析代码逻辑 //基于 .xls 格式解析 HSSF //1. 加载Excel文件对象 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is); //2. 读取一个sheet HSSFSheet sheet = hssfWorkbook.getSheetAt(0);//获取第一个sheet对象 //3. 读取sheet中每一行,一行数据对应一个区域对象 for (Row row : sheet) { //3.1 第一行表头 跳过 if (row.getRowNum() == 0) { //第一行 跳过 continue; } //跳过空值的行,要求此行作废 // if (row.getCell(0) == null // || StringUtils.isBlank(row.getCell(0).getStringCellValue())) { // continue; // } Merch merch = new Merch(); //3.2 封装数据 //获取单元格 // Cell cell = row.getCell(0); Cell cell6 = row.getCell(6); Cell cell2 = row.getCell(2); //设置单元格类型 // cell.setCellType(CellType.STRING); cell2.setCellType(CellType.STRING); cell6.setCellType(CellType.STRING); // merch.setId(Integer.valueOf(cell.getStringCellValue())); //序号Id merch.setName(row.getCell(1).getStringCellValue()); //名称 merch.setCode(row.getCell(2).getStringCellValue()); //代表 merch.setPackaging(row.getCell(3).getStringCellValue()); //包装 merch.setPrice(row.getCell(4).getNumericCellValue()); //价格 merch.setFactory(row.getCell(5).getStringCellValue()); //生产厂家 merch.setStock(Integer.valueOf(cell6.getStringCellValue())); //库存 merchs.add(merch); } //System.out.println(merchs); //4. 调用业务层,添加数据 for (Merch data: merchs){ merchService.saveMerch( data); } //5. 删除文件 myFile.delete(); return "导入成功"; // return new ResponseEntity<Void>(HttpStatus.OK); } catch (Exception e) { //服务器错误 // return new ResponseEntity<Void>(HttpStatus.INTERNAL_SERVER_ERROR); e.printStackTrace(); } return "导入失败"; }
4.3.serviceImpl层(这里就直接实现类了,都是基本的添加操作)
@Autowired private MerchDao merchDao; @Override public int saveMerch(Merch merch) { int rows = merchDao.insertMerch(merch); return rows; }
4.4.dao层或mapper层
int insertMerch(Merch merch);
与之对应的mapper.xml,写mapper.xml需要注意
①namespace的对应空间为你的mapper层
②id为你的方法名
③增删改的resultType的返回值大都是int,可以不写<insert id="insertMerch"> insert into merch (name,code,factory,packaging,price,stock) values (#{name},#{code},#{factory},#{packaging},#{price},#{stock}) </insert>
5.总结
都是先获取这个操作excel的实例,然后再获取第一个sheet对象,循环遍历将得到的数据封装到List集合里。
再将List集合遍历插入到数据库进行持久化操作。 -
java中使用poi导入Excel表格到数据库
2022-01-04 16:54:36java中使用poi导入Excel表格到数据库一.pom.xml中导入所需要的依赖:
<!--读取excel文件--> //操作03版的Excel,即以.xls结尾的excel表 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> //操作07版的Excel,即以.xlsx结尾的Excel表 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>
二.编写前端代码:
//HTML: <input id="articleImageFile" name="excelFile" type="file" class="form-control" style="width: 300px; display: inline;" /> <a class="btn btn-warning" id = "import" onclick="importExcel()" shiro:hasPermission="system:student:import"> <i class="fa fa-upload"></i> 导入</a> //js代码: <script> function importExcel() { var formData = new FormData(); var name = $("#articleImageFile").val(); formData.append("file", $("#articleImageFile")[0].files[0]); formData.append("name", name);//这个地方可以传递多个参数 $.ajax({ url: '/system/student/importExcel', type: 'POST', async: false, data: formData, // 告诉jQuery不要去处理发送的数据 processData: false, // 告诉jQuery不要去设置Content-Type请求头 contentType: false, beforeSend: function () { console.log("正在进行,请稍候"); }, success: function (responseStr) { if (responseStr == "上传成功") { alert("导入成功"); } else { alert("导入失败"); } } }); } </script>
三.controller层代码:
@PostMapping("/importExcel") @ResponseBody public String importExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) { System.out.println("file"+file.getSize()); try { // @RequestParam("file") MultipartFile file 是用来接收前端传递过来的文件 // 1.创建workbook对象,读取整个文档 InputStream inputStream = file.getInputStream(); //POIFSFileSystem poifsFileSystem = new POIFSFileSystem(inputStream); XSSFWorkbook wb = new XSSFWorkbook(inputStream); // 2.读取页脚sheet XSSFSheet sheetAt = wb.getSheetAt(0); // 3.循环读取某一行 int index = 0; for (Row row : sheetAt) { // 4.读取每一行的单元格 if (index == 0) { index++; continue; } //创建一个学生对象 SysStudent student = new SysStudent(); //将Excel表中单元格的值与学生对象的值对应 student.setName(row.getCell(0).getStringCellValue()); //因为学号是数字,Excel默认是数字类型,我的数据库是字符串类型,所以需要设置下类型 row.getCell(1).setCellType(CellType.STRING); student.setStuId(row.getCell(1).getStringCellValue()); student.setIdentity(row.getCell(2).getStringCellValue()); student.setDescription(row.getCell(3).getStringCellValue()); student.setProvince(row.getCell(4).getStringCellValue()); sysStudentService.insertSysStudent(student); row.getCell(0).setCellType(CellType.STRING); String stringCellValue = row.getCell(0).getStringCellValue(); row.getCell(1).setCellType(CellType.STRING); String stringCellValue2 = row.getCell(1).getStringCellValue(); row.getCell(2).setCellType(CellType.STRING); String stringCellValue3 = row.getCell(2).getStringCellValue(); row.getCell(3).setCellType(CellType.STRING); String stringCellValue4 = row.getCell(3).getStringCellValue(); row.getCell(4).setCellType(CellType.STRING); String stringCellValue5 = row.getCell(4).getStringCellValue(); // 写多少个具体看大家上传的文件有多少列..... // 测试是否读取到数据,及数据的正确性 System.out.println(stringCellValue); System.out.println(stringCellValue2); System.out.println(stringCellValue3); System.out.println(stringCellValue4); System.out.println(stringCellValue5); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return "上传成功"; }
-
SpringBoot中使用POI实现Excel导入到数据库(图文教程已实践)
2019-03-19 13:53:20IDEA中开发SpringBoot项目时需要将Excel模板中数据导入的到数据库。 Excel模板如下 实现思想 首先将模板上传到服务器中某路径,并将当前路径存储,然后使用POI自带的 工具类获取到sheet以及行数以及每个cell,... -
Java实现批量导入excel表格数据到数据库中的方法
2020-08-29 00:15:47主要介绍了Java实现批量导入excel表格数据到数据库中的方法,结合实例形式详细分析了java导入Excel数据到数据库的具体步骤与相关操作技巧,需要的朋友可以参考下 -
java基于POI将Excel表格数据导入到数据库
2022-02-16 14:10:26java基于POI将Excel表格数据导入到数据库 -
SSM使用POI解析Excel数据并实现批量导入到数据库
2020-05-16 17:46:451、下载需要的jar包:POI Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。本例中主要使用其中的两个包:HSSF提供读写Microsoft Excel XLS(2003版本)格式... -
spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库.zip
2020-11-22 00:53:30spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库 -
poi导入excel到数据库,excel中的空白行也会导入到数据库
2015-10-15 06:35:53 if条件判断也没起作用,如何才能正确判断 -
Spring Boot使用Poi将Excel导入进数据库
2021-03-18 17:22:03文章目录1. 效果2. 思路3. 项目结构4. 源码4.1 `pom.xml`添加相关依赖4.2 `application.properties`相关配置4.3 `Bill.java`实体类4.4 ...使用Poi与Poi-ooxml实现Excel解析 使用MySQL与MyBatis实现数据库连接与操作 -
在java poi导入Excel通用工具类示例详解
2020-08-29 11:11:44主要给大家介绍了关于在java poi导入Excel通用工具类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 -
POI实现Excel表格导入到数据库
2021-06-28 18:19:54POI实现Excel导入到数据库 1.创建maven工程,工程结构如下 2.导入依赖和编写配置文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-parent</... -
将Excel文件导入数据库(POI+Excel+MySQL+jsp页面导入)
2017-09-27 23:16:38http://blog.csdn.net/meng564764406/article/details/52444644 http://blog.csdn.net/meng564764406/article/details/52426634 源码 -
使用poi导入excel文件数据到数据库
2016-07-14 09:28:55excel 文件 " ) ; } Workbook workbook = WorkbookFactory.create(multipartFile.getInputStream()) ; Sheet sheet = workbook.getSheetAt( 0 ) ; int rows = sheet.getLastRowNum() ; int ... -
java实现批量导入Excel表格数据到数据库
2020-09-07 19:07:39主要为大家详细介绍了java实现批量导入Excel表格数据到数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
poi导入excel到数据库,数据库是number类型,实体是integer,解析过程中报错
2015-10-08 07:51:23  -
poi做的Excel导入数据库表工具
2012-03-14 21:28:15编写语言:该小工具是用纯JAVA Swing 编写的; 开发原因:有一次我发现有同事因为要根据客户提供的Excel, 要一条一条数据的通过系统录入到数据库表中,...开发一个软件可以直接将Excel中的数据导入到数据库表中。 -
Java使用POI导入Excel到数据库报java.text.ParseException: Unparseable date
2019-05-23 11:02:55原因:如果Excel里面有格式为:xx年xx月xx日,或者类似的中文的日期单元格,在这里进行判断:HSSFDateUtil.isCellDateFormatted(row.getCell(3)) ,返回的结果就为false 处理方式: SimpleDateFormat sdf =new ... -
使用Apache POI将Excel中的数据批量导入到数据库中(使用Element上传文件)
2020-08-11 20:22:00Apache POI导入数据到数据库 Apache POI简介 在Maven工程中导入依赖 在页面添加上传文件组件,配置文件 使用工具类将上传文件的数据导入到数据库 Apache POI简介 Apache POI是用Java编写的免费开源的跨平台的Java... -
POI导入excel到数据库及遇到空值处理
2018-07-11 16:39:41//从0开始到4列 for(int c=0;c;c++){ String li = null; try { row.getCell(c).setCellType(Cell.CELL_TYPE_STRING); li =row.getCell(c).getStringCellValue(); list.add(li);... -
SpringBoot + Vue+POI实现导入Excel到数据库与导出数据库数据到Excel表格
2021-04-28 21:38:25SpringBoot + Vue实现导入Excel到数据库与导出数据库数据到Excel表格 一、导入excel表格到数据库 (一)后端实现 1.导入POI依赖 <!--导入POI依赖,ms office文件生成--> <dependency> <groupId>... -
利用POI解析excel并存入数据库demo
2017-10-24 19:32:40利用 Apache POI 对 excel 操作并存入MySQL数据库的一个小demo。 -
使用poi将excel文件导入mysql数据库
2022-03-13 17:38:56在实际开发中,肯定会遇到需要维护大量数据,如果全部手动录入,肯定是很麻烦的,而且吃力不讨好,花了很多时间,还很low,这里给大家整理了一个接口,需要输入文件路径,和上传文件即可将excel全部录入数据库,如有... -
poi导入excel,数据保存到数据库
2019-09-03 13:48:43//导入excel @RequestMapping(value = "/import", method=RequestMethod.POST) public JsonDto importExcel(@RequestParam(value="file",required = false) MultipartFile file, HttpServlet... -
POI从Excel中把数据导入数据库,怎么操作?
2018-09-29 01:51:19数据库中有多表,导入的Excel是如何判断应该导入哪个表中的? -
java运用poi导入excel并存入数据库(内含自己用的选择路径方法)
2021-03-11 11:56:58} } } } //将数据插入到mysql数据库中 String[] val = value.split(","); Cucustomer cu = new Cucustomer(); cu.setCucustomerclass(0); cu.setCucustomersource(0);//来自网页 cu.setCucustomertype(0); cu.... -
一篇学会导入导出,利用poi将Excel导入到数据库,将数据库导出到Excel
2021-03-10 18:17:55一篇读懂利用poi将Excel导入到数据库,将数据库导出到Excel前言一、pandas是什么?使用步骤1.引入pom依赖2.写poi工具类3.写XXXController层4.写XXXService层5.写XXXServiceImpl实现层6.写XXXMapper7.写XXXMapper.xml...