目录

目标

实验背景

原理

具体实现


目标

以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. 有一个5 * 5的二维数组,保留主对角线上的元素,并使其他元素均为0,要求用函数和子函数完成
  2. OpenCV中OrbDescriptorExtractor
  3. JZOJ 5266. number
  4. 制作一个类似苹果VFL的格式化语言来描述UIStackView
  5. 树的度,结点,叶子结点,二叉树
  6. 解决git关联的的文件颜色、小图标
  7. Java动态代理全面分析
  8. golang 结构体判空
  9. Less的条件表达式Guards
  10. markdown图片设置
  11. 触漫机器人_触触+机器人=???
  12. XMLHttpRequest.overrideMimeType()
  13. 公因式的概念_公因式概念论文,关于也淡化概念相关参考文献资料-免费论文范文...
  14. Paragon NTFS提示安装分卷失败,怎么解决
  15. http动态代理转socks5怎么获取?
  16. 倪光南院士:中国为何做不出像样的操作系统
  17. 「题解」NOIP模拟测试题解乱写II(36)
  18. 什么是失血模型和充血模型?(DDD)
  19. SATA系列专题之五:Link Power Management解析
  20. 三分钟搞定dbeaver企业版

热门文章

  1. GitHub安装与添加认证
  2. 微信小程序的简单页面设计(不涉及后端)
  3. 快餐店收银系统Pos学习笔记
  4. Maven Dependency设置,详解! 1
  5. 40、字符串排序(将字符串中字符按照字母表的顺序排序)。
  6. linux 进入汉字目录,终端下拼音补全中文名称和路径
  7. 【C语言程序设计】C语言实现一元二次方程的求解
  8. ArcGIS基础实验操作100例--实验25统一多分辨率栅格数据
  9. 离散数学·图的矩阵表示、平面图
  10. Linux驱动-字符设备驱动