数据库储存Excel表信息
目录
目标
实验背景
原理
具体实现
目标
以Java程序为中介,将Excel表中的信息储存到Mysql数据库中
实验背景
先需要将一张包含学生和老师信息的Excel表中的数据存储到Mysql数据库中
原理
先通过相关jar包的类从Excel表中读取到信息,接着对这些信息进行封装,调用dao层的相关方法存储到数据库中即可
具体实现
要实现该功能我们需要引入一些jar包,这些jar包中封装有操作Excel表的相关类
在导入了jar包后,我们通过有关类先读取信息;先将每行的信息存入map中,之后运用JavaBean的populate方法对对象信息进行封装,最后调用持久层(dao层)方法存储有关对象信息。
import damain.User;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.joda.time.DateTime;
import service.UserService;
import service.impl.UserServiceImpl;import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;public class test {public static void main(String[] args) throws Exception {ReadExcel("D:\\桌面\\测试.xls");}public static void ReadExcel(String path) throws Exception {UserService service=new UserServiceImpl();File file = new File(path);// 获取文件流FileInputStream inputStream = new FileInputStream(file);// 1.创建一个工作簿, excel 能操作的它都能操作/** 注意:xls的要用HSSFWorkbook,xlsx要用XSSFWorkbook* 二者区别在于前者是小容量,数据量超过60000↑+便会报错;后置没有该限制,适用于处理数据量大的情况*/Workbook workbook = new HSSFWorkbook(inputStream);// 2.得到表sheet1Sheet sheet = workbook.getSheetAt(0);// 获取物理最大行(即excel表当前所加载的行数,并不是指我们数据写到的哪行)int rowCount = sheet.getPhysicalNumberOfRows();// 获取标题行Row rowTitle = sheet.getRow(0);//读取行for (int rowNum = 1; rowNum < rowCount; rowNum++) {Row rowData = sheet.getRow(rowNum);//封装数据Map<String,String> map=new HashMap();//创建对应对象User user=new User();//该行的数据if (rowData != null && rowData.getCell(0)!=null) {//注意要加上rowData.getCell(0)!=null;不然会出现读空数据情况// 读取列int cellCount = rowTitle.getPhysicalNumberOfCells();for (int cellNum = 0; cellNum < cellCount; cellNum++) {//System.out.print("[" + (rowNum + 1) + "-" + (cellNum + 1) + "]");String cellValue = "";Cell cell = rowData.getCell(cellNum);// 匹配数据的类型if (cell != null) {CellType cellType = cell.getCellType();//int cellType = cell.getCellType();//选择列的对应数据类型switch (cellType) {case STRING: // 字符串//System.out.print("[String]");cellValue = cell.getStringCellValue();break;case NUMERIC: //数字// System.out.print("[numeric]");if (HSSFDateUtil.isCellDateFormatted(cell)) { //日期// System.out.print("[日期]");Date date = cell.getDateCellValue();cellValue = new DateTime(date).toString();} else {// 不是日期格式,防止数字过长// System.out.print("[转换为字符串输出]");cell.setCellType(CellType.STRING);cellValue = cell.toString();}break;default:System.out.print("[数据类型错误!]");break;}}map.put(rowTitle.getCell(cellNum).getStringCellValue(),cellValue);}try {BeanUtils.populate(user, map);System.out.println("user = " + user);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}if(user.getIdentity().equals("学生")){Boolean aBoolean = service.registerStudent(user);System.out.println(aBoolean);}if(user.getIdentity().equals("导师")){Boolean aBoolean = service.registerTutor(user);System.out.println(aBoolean);}}}}
}
数据库储存Excel表信息相关推荐
- jdbc获取数据库元数据,获取数据库列表,获取数据库基本信息,获取指定数据库中的表信息,获取指定表中的字段信息
jdbc获取数据库元数据 package cn.itcast.metadata.test;import org.junit.Before; import org.junit.Test;import j ...
- Sql Server获取数据库名,表信息,字段信息,主键信息等
--Sql Server获取数据库名,表信息,字段信息,主键信息等--获取所有数据库名: SELECT name FROM master..sysdatabases WHERE name NOT IN ...
- (转)【mysql元数据库】使用information_schema.tables查询数据库和数据表信息 ---数据记录大小统计...
转:https://www.cnblogs.com/ssslinppp/p/6178636.html https://segmentfault.com/q/1010000007268994?_ea=1 ...
- mysql数据库中插入表信息_mysql数据库中插入表
通过binlog恢复mysql数据库 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用binlog日志 ...
- ajax调用api改表格数据库,【django基础】django接口 异步ajax请求 导出数据库成excel表(包裹前端后端)...
py文件: from django.utils.http import urlquote from rest_framework.views import APIView from django.sh ...
- 详解MySQL information_schema数据库常用的表信息以及各表对应的字段信息;以及如何登录mysql和创建视图
详解information_schema数据库 登录mysql 查询information_schema信息 information_schema常用数据表 TABLES 查询tables table ...
- 数据库导入Excel表
1.将excel另存为 .csv文件 2.用记事本打开,查看是各字段用" ,"隔开的文件,在记事本中将文件另存为,修改编码格式为utf-8 3.在数据库中进行导入. 刷新一下就可以 ...
- 2020和2021年度耕地资源质量分类更新数据库快速汇总成果excel表
步骤一:首先需将数据库要素表全部转为excel表,可使用本人制作的工具箱:数据库要素表批量转excel 注意在10.8版本新建工程文件中打开工具箱 步骤二:制作模板,使用最终成果excel表格制作模板 ...
- 导出数据库表信息生成Word文档
一.背景描述 系统上线或者交付,或者需要提供整理数据库表信息,如果一个个整理未免麻烦,接下来一个demo示例如何用JAVA导出Mysql数据库表信息生成Word文档. 1.项目源码地址:https:/ ...
最新文章
- 3种方式理解旋转变换
- 分离硬件和代码、稳定 API,PyTorch Lightning 1.0.0 版本正式发布
- tableau实战系列(八)-用数据桶实现图表的固定轴距
- 滴滴顺风车GM:大多数产品经理定义是狭隘的
- .net得到ip(引)
- Extjs4中up()和down()的用法以及组件查找_ComponentQuery类
- C#并发实战Parallel.ForEach使用
- quartz 任务调试 建表 sql 语句、create table语句
- python元组元素抓7_Python3基础 tuple 通过拆分元组向元组中加入新的元素
- Spring boot - 整合 Redis缓存(下)
- spring-boot-devtools 热部署
- 时间安排还是很不合理
- cesium-加载点云数据
- 【C语言程序】求直角三角形边长
- 无线网和网吧服务器,网吧网络使用无线局域网的几个优势所在
- 信息技术发展史及其趋势
- 双馈风力发电机系统仿真
- Rotary pumps 旋转泵
- 增强型热图绘制R(superheat, heatmap.2, pheatmap)
- Scratch3.0——助力新进程序员理解程序(十一、自制积木)