Java通过apache poi 读取excel(.xlsx)文件,并通过MyBbtis插入数据库中
来源:互联网 发布:淘宝商品点击排名 编辑:程序博客网 时间:2024/06/05 09:45
1.与数据库对应的实体类
package com.scysun.entity;
public class Classify {
int id; //主键
String name;
int parentsNameId; //所属类的ID,因为上传的表中有分类结构 ,表截图在后面有
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getParentsNameId() {
return parentsNameId;
}
public void setParentsNameId(int parentsNameId) {
this.parentsNameId = parentsNameId;
}
@Override
public String toString() {
return "Classify [id=" + id + ", name=" + name + ", parentsNameId=" + parentsNameId + "]";
}
}
2.创建对应的数据表结构
create table classify(
id int not null auto_increment,primary key(id),
name varchar(40),
parentsNameId int
);
3.读取文件
package com.scysun.readExcel;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import com.scysun.entity.Classify;import org.apache.commons.codec.binary.StringUtils;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellType;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.util.CellAddress;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class PoiWithExcel {public List<Classify> read(){List<Classify> list = new ArrayList<Classify>();try { FileInputStream file = new FileInputStream("D:\\zhiming\\51分类.xlsx"); //获取工作薄 XSSFWorkbook workbook = new XSSFWorkbook(file); //获取工作表 XSSFSheet sheet = workbook.getSheetAt(0); //遍历每一行 //Iterator<Row> rowIterator = sheet.iterator(); //获取总行数 int rowCount = sheet.getPhysicalNumberOfRows(); //记录空行数 int emptyNumber = 0; //行循环 for(int r=1;r<=rowCount;r++) { Row row = sheet.getRow(r); //如果为空行 if(sheet.getRow(r)==null){ continue; } int cellCount = row.getLastCellNum(); //int g = 0; /*for(int m=0;m<cellCount;m++){ if(row.getCell(m).getStringCellValue()==""){ g = g+1; if(g==cellCount){ //System.out.println(g); continue; } } }*/ if(isRowEmpty(row)==false){ emptyNumber++; continue; } //列循环 for(int c=0;c<cellCount;c++) { String cellValue = row.getCell(c).getStringCellValue(); Cell cell = row.getCell(c); if(cellValue==""){ continue; } Classify cf = new Classify(); cf.setId(r-emptyNumber); cf.setName(row.getCell(c).getStringCellValue()); if(c>=1){ for(int r1=r;r1>=1;r1--){ if(sheet.getRow(r1).getCell(c-1).getStringCellValue()!=""){ cf.setParentsNameId(sheet.getRow(r1).getCell(c-1).getRowIndex()-emptyNumber); break; } } }else{ cf.setParentsNameId(r-emptyNumber); } list.add(cf); //System.out.print(cell); } //System.out.println(""); } file.close(); //System.out.println(rowCount); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }return list; }//判断是否是空行public static boolean isRowEmpty(Row row) {int g = 0; for (int c=0; c < row.getPhysicalNumberOfCells(); c++) { Cell cell = row.getCell(c); String cellValue = cell.getStringCellValue().trim(); if(cellValue==""){ g = g+1; if(g==row.getPhysicalNumberOfCells()){ return false; } } }return true;}/*public static void main(String[] args) {PoiWithExcel pwe = new PoiWithExcel();List list = pwe.read();for(int i=0;i<list.size();i++){System.out.println(list.get(i));}}*/}
4.MyBatis的配置文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <typeAliases> <package name="com.scysun.entity"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3305/lable?characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/scysun/config/Classify.xml"/> </mappers> </configuration>
5.MyBatis映射文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.scysun.config"> <select id="selectClassify" resultType="Classify"> select * from classify; </select> <insert id="insertClassify" parameterType="Classify"> insert into classify(name,parentsNameId) values(#{name},#{parentsNameId}); </insert> <insert id="insert" parameterType="Classify"> insert into classify(name,parentsName) values(#{name},#{parentsName}); </insert> <delete id="deleteClassify" parameterType="Classify">delete from classify where id>=77;</delete><update id="updateClassify" parameterType="Classify">update classify set name=#{name} where id=#{id};</update> </mapper>
6.执行SQL操作
package com.scysun.test;import java.io.IOException;import java.io.InputStream;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.scysun.entity.Classify;import com.scysun.readExcel.PoiWithExcel;public class Test {public static void main(String[] args) {String resource = "mybatis-config.xml";try {InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session=sqlSessionFactory.openSession(); //insertAllTo(session); //insertIntoClassify(session); selectAll(session); //session.delete("deleteClassify"); session.commit(); session.close(); //System.out.println("删除成功"); //System.out.println("插入成功");} catch (IOException e) {e.printStackTrace();} }public static void insertAllTo(SqlSession session){PoiWithExcel pwe = new PoiWithExcel();List<Classify> list = pwe.read();for(Classify classify : list){ session.insert("insertClassify", classify); }}public static void selectAll(SqlSession session){List<Classify> list = session.selectList("selectClassify");for(Classify classify : list){System.out.println(classify);}}public static void insertIntoClassify(SqlSession session){Classify c = new Classify();c.setName("新增一条数据");//c.setParentsName("新增数据的所属类");session.insert("insert", c);}}
7.这是我要上传的文件截图
8.项目用的包
自己也是刚入坑没多久,有什么问题,欢迎随时留言相互交流学习
阅读全文
1 0
- Java通过apache poi 读取excel(.xlsx)文件,并通过MyBbtis插入数据库中
- JAVA 通过poi 读取 本地excel(.xls,.xlsx)文件,文件中 包含图片
- 通过poi实现解析并读取excel文件(包含xls、xlsx后缀)
- 通过poi实现解析并读取excel文件(包含xls、xlsx后缀)
- Java中通过POI读取Excel 2003 - 2007的xls,xlsx格式
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- POI读取并解析xlsx格式的excel文件
- java通过poi解析Excel文件,直接读取客户端文件
- java通过apache poi读取创建excel2003文件
- Java通过poi写入和读取Excel文件
- 通过POI读取Excel
- java:poi读取excel文件,分xls和xlsx
- java使用POI读取excel文件,兼容xls和xlsx
- 通过POI统一读取Excel文件
- java通过apache poi 读取创建excel2007
- Java通过poi组件usermodel读取Excel
- [Java]通过Poi包读取Excel表格
- POI读取EXCEL下xlsx,xls文件
- 皮尔逊相关度系数原理,以及java实现
- 解决科大讯飞11210错误
- 5.2
- 数组中的逆序对
- 机器学习学习笔记--迁移学习
- Java通过apache poi 读取excel(.xlsx)文件,并通过MyBbtis插入数据库中
- Android 7.0 高通平台原生Launcher3未读角标更新流程
- 神经元细节
- TCP套接字编程
- PaaS Innovation 2017开幕在即,共襄技术演进与商业碰撞盛宴
- 01 H5 uboot编译及烧写
- linux下/etc/fstab文件详解
- vue处理axios post请求传参的问题
- DBus相关问题
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
水果汤的做法大全
汤有哪些
汤菜的做法大全
鸡蛋汤的做法大全
汤有哪些做法大全
西红柿鸡蛋汤的做法
煲汤大全
菌汤
羊杂汤的家常做法
银耳雪梨汤的做法
菜汤的做法大全家常
素汤的做法大全家常
鸽子炖汤
肉丸汤
烧汤大全
莲藕汤
鲍鱼汤做法
杂烩汤
肚丝汤的做法
煮什么汤好喝
汤谱大全
怎样做汤好喝
熬汤
煲汤大全及做法
家常汤的做法大全
金针菇鸡蛋汤
上汤豆苗
滋补汤的做法大全
莲藕汤的做法
家常汤
汤大全做法
面筋汤的家常做法
西葫芦汤的做法
营养汤
肉汤的做法大全家常
冬阴功汤
简单的汤类做法大全
滋补汤
开胃汤
汤类菜谱大全
苦瓜汤的做法大全