目录

目标

实验背景

原理

具体实现


目标

以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表信息相关推荐

  1. jdbc获取数据库元数据,获取数据库列表,获取数据库基本信息,获取指定数据库中的表信息,获取指定表中的字段信息

    jdbc获取数据库元数据 package cn.itcast.metadata.test;import org.junit.Before; import org.junit.Test;import j ...

  2. Sql Server获取数据库名,表信息,字段信息,主键信息等

    --Sql Server获取数据库名,表信息,字段信息,主键信息等--获取所有数据库名: SELECT name FROM master..sysdatabases WHERE name NOT IN ...

  3. (转)【mysql元数据库】使用information_schema.tables查询数据库和数据表信息 ---数据记录大小统计...

    转:https://www.cnblogs.com/ssslinppp/p/6178636.html https://segmentfault.com/q/1010000007268994?_ea=1 ...

  4. mysql数据库中插入表信息_mysql数据库中插入表

    通过binlog恢复mysql数据库 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用binlog日志 ...

  5. ajax调用api改表格数据库,【django基础】django接口 异步ajax请求 导出数据库成excel表(包裹前端后端)...

    py文件: from django.utils.http import urlquote from rest_framework.views import APIView from django.sh ...

  6. 详解MySQL information_schema数据库常用的表信息以及各表对应的字段信息;以及如何登录mysql和创建视图

    详解information_schema数据库 登录mysql 查询information_schema信息 information_schema常用数据表 TABLES 查询tables table ...

  7. 数据库导入Excel表

    1.将excel另存为 .csv文件 2.用记事本打开,查看是各字段用" ,"隔开的文件,在记事本中将文件另存为,修改编码格式为utf-8 3.在数据库中进行导入. 刷新一下就可以 ...

  8. 2020和2021年度耕地资源质量分类更新数据库快速汇总成果excel表

    步骤一:首先需将数据库要素表全部转为excel表,可使用本人制作的工具箱:数据库要素表批量转excel 注意在10.8版本新建工程文件中打开工具箱 步骤二:制作模板,使用最终成果excel表格制作模板 ...

  9. 导出数据库表信息生成Word文档

    一.背景描述 系统上线或者交付,或者需要提供整理数据库表信息,如果一个个整理未免麻烦,接下来一个demo示例如何用JAVA导出Mysql数据库表信息生成Word文档. 1.项目源码地址:https:/ ...

最新文章

  1. 3种方式理解旋转变换
  2. 分离硬件和代码、稳定 API,PyTorch Lightning 1.0.0 版本正式发布
  3. tableau实战系列(八)-用数据桶实现图表的固定轴距
  4. 滴滴顺风车GM:大多数产品经理定义是狭隘的
  5. .net得到ip(引)
  6. Extjs4中up()和down()的用法以及组件查找_ComponentQuery类
  7. C#并发实战Parallel.ForEach使用
  8. quartz 任务调试 建表 sql 语句、create table语句
  9. python元组元素抓7_Python3基础 tuple 通过拆分元组向元组中加入新的元素
  10. Spring boot - 整合 Redis缓存(下)
  11. spring-boot-devtools 热部署
  12. 时间安排还是很不合理
  13. cesium-加载点云数据
  14. 【C语言程序】求直角三角形边长
  15. 无线网和网吧服务器,网吧网络使用无线局域网的几个优势所在
  16. 信息技术发展史及其趋势
  17. 双馈风力发电机系统仿真
  18. Rotary pumps 旋转泵
  19. 增强型热图绘制R(superheat, heatmap.2, pheatmap)
  20. Scratch3.0——助力新进程序员理解程序(十一、自制积木)

热门文章

  1. 图像处理(十一)图像分割(3)泛函能量LevelSet、snake分割
  2. 网页滚动字幕效果代码及滚动字幕效果制作实例演示
  3. Wow魔兽世界服务器搭建详细教程,魔兽世界服务器配置要求
  4. 《乌合之众》中的50金句
  5. java计算机毕业设计购物网站设计(附源码、数据库)
  6. NotePad++ 查询结果窗口不见了,找回办法
  7. MDD | TO-252封装选型指南
  8. 石墨烯核心技术深度分析
  9. 【ML】机器学习数据集:sklearn中回归数据集介绍
  10. 【Mac新手必看】苹果macOS桌面壁纸设置技巧