Excel表格的导入

  • 功能描述
    • 结构描述
    • 文件传输
    • 需要导入的jar
    • 主要API
    • Excel解析
    • 总结

功能描述

Excel的导入就是在java后端对Excel的表格的内容进行解析,将解析的内容存放进数据库当中就可以了
这其中涉及的技术点有两个:
1.文件的传输:即在前端获取文件的信息,将文件的信息传给后端
2.后端获取前端的文件信息,将文件进行解析,然后将解析的数据存放进数据库当中

结构描述

文件传输

文件的传输我了解的有两种方式:
1.利用ajaxFileUpload插件
2.利用bootstrap的fileinput插件
因为本文的重点是对excel的解析,所以对于文件传输的部分不做讲解

需要导入的jar

1.commons-collections4-4.1.jar

2.poi-3.17-beta1.jar

3.poi-ooxml-3.17-beta1.jar

4.poi-ooxml-schemas-3.17-beta1.jar

5.xmlbeans-2.6.0.jar

主要API

1.import org.apache.poi.ss.usermodel.Workbook,对应Excel文档;

2.import org.apache.poi.hssf.usermodel.HSSFWorkbook,对应xls格式的Excel文档;

3.import org.apache.poi.xssf.usermodel.XSSFWorkbook,对应xlsx格式的Excel文档;

4.import org.apache.poi.ss.usermodel.Sheet,对应Excel文档中的一个sheet;

5.import org.apache.poi.ss.usermodel.Row,对应一个sheet中的一行;

6.import org.apache.poi.ss.usermodel.Cell,对应一个单元格。

Excel解析

解析按照以下几个步骤来:

  1. 获取文件
  2. 读取文件,判断文件类型
//读取excelpublic static Workbook readExcel(String filePath){Workbook wb = null;if(filePath==null){return null;}String extString = filePath.substring(filePath.lastIndexOf("."));InputStream is = null;try {is = new FileInputStream(filePath);if(".xls".equals(extString)){return wb = new HSSFWorkbook(is);}else if(".xlsx".equals(extString)){return wb = new XSSFWorkbook(is);}else{return wb = null;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return wb;}
  1. 开始解析数据,解析由sheet–>row–>cell的顺序
  2. 保存数据
@RequestMapping(value = "/importExcel",method=RequestMethod.POST)@ResponseBodypublic Result importExcel(HttpServletRequest request,HttpServletResponse response) {System.out.println("进入了测试方法!");Result result=new Result();Workbook wb =null;Sheet sheet = null;Row row = null;List<Map<String,String>> list = null;String cellData = null;String filePath = "C:\\Users\\admin\\Desktop\\学生信息导入模板.xlsx";String columns[] = {"name","age","address"};wb = readExcel(filePath);if(wb != null){//用来存放表中数据list = new ArrayList<Map<String,String>>();//获取第一个sheetsheet = wb.getSheetAt(0);//获取最大行数int rownum = sheet.getPhysicalNumberOfRows();//获取第一行row = sheet.getRow(0);//获取最大列数int colnum = row.getPhysicalNumberOfCells();for (int i = 1; i<rownum; i++) {Map<String,String> map = new LinkedHashMap<String,String>();row = sheet.getRow(i);if(row !=null){for (int j=0;j<colnum;j++){cellData = (String) getCellFormatValue(row.getCell(j));map.put(columns[j], cellData);}}else{break;}list.add(map);}}//遍历解析出来的listfor (Map<String,String> map : list) {Student student=new Student();UUID uuid = UUID.randomUUID();String str = uuid.toString();String uuidStr = str.replace("-", "");student.setId(uuidStr);for (Entry<String,String> entry : map.entrySet()) {System.out.print(entry.getKey()+":"+entry.getValue()+",");if(entry.getKey().equals("name")){student.setName(entry.getValue());}else if(entry.getKey().equals("age")){student.setAge(Integer.parseInt(entry.getValue().substring(0,entry.getValue().indexOf("."))));}else if(entry.getKey().equals("address")){student.setAddress(entry.getValue());}}result = studentService.addStudent(student);System.out.println();}result.setStatus(1);return result;}

这里还需要一个解析单元格的工具类:

 public static Object getCellFormatValue(Cell cell){Object cellValue = null;if(cell!=null){//判断cell类型switch(cell.getCellType()){case Cell.CELL_TYPE_NUMERIC:{cellValue = String.valueOf(cell.getNumericCellValue());break;}case Cell.CELL_TYPE_FORMULA:{//判断cell是否为日期格式if(DateUtil.isCellDateFormatted(cell)){//转换为日期格式YYYY-mm-ddcellValue = cell.getDateCellValue();}else{//数字cellValue = String.valueOf(cell.getNumericCellValue());}break;}case Cell.CELL_TYPE_STRING:{cellValue = cell.getRichStringCellValue().getString();break;}default:cellValue = "";}}else{cellValue = "";}return cellValue;}

总结

我做的时候大概就是这么个流程,主要使用了apache的poi插件,该插件对于操作office的文件非常厉害,大家可以作为参考,去学习学习.

关于Excel表格的导入相关推荐

  1. python导入excel表格-Python 将Excel表格数据导入MySQL数据库

    今天分享一个刚刚完成的Python脚本,一个实用的小技能,就是利用Python代码,将EXCEL表格数据导入到MySQL数据库中!话不多说,下面代码示例. Excel表格数据.jpg 1示例代码: i ...

  2. PL/SQL Developer将Excel表格数据导入表格

    说明,在将excel表格数据导入之前,需要创建一个对应的表. 一.打开PL/SQL Developer之后,选择tools(工具)---ODBC Imoprter(ODBC导入器) 二.选择导入文件的 ...

  3. Excel表格数据导入

    开发工具与关键技术:vs2015 MVC 作者:陈星宇 撰写时间:2019.5.1 当我们学会新增时,都是一条一条数据的新增,当我们需要大量的数据时,我们不妨增加点新东西那就是导入功能,我们来讲一讲关 ...

  4. 基于SpringBoot+EasyExcel+vue3实现excel表格的导入和导出

    目录 基于SpringBoot+EasyExcel+vue3实现excel表格的导入和导出 一.导入和导出 二.导出数据为excel实现过程 三.将excel中的数据导入到数据库中 基于SpringB ...

  5. 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...

    如何把excel里的表导入到oracle里 使用第三方工具吧,toad之类的 一个excel表格中有多个sheet,如何将其导入oracle数据库 户和要用DBA 最简单得建用户: create us ...

  6. 使用python将excel表格通讯录导入手机通讯录

    使用python将excel表格通讯录导入手机通讯录 核心问题: 安卓手机使用的通讯录文件格式为.vcf (应该是vCard 格式),这种格式的文件可以直接使用手机通讯录打开,导入手机通信录. 我们需 ...

  7. mysql 命令导入excel,【mysql命令导入excel表】excel表格怎样导入数据库

    怎么把excel里的数据导入数据库中的表中 打开企业管理器开要导入数数据库,在表上按右键,所务-->导入数据,弹出DTS导入/导出向导,按 下一步 , 2.选择数据源 Microsoft Exc ...

  8. oracle数据库表excel文件位置,“如何将excel表格数据导入到oracle数据库对应的表中?“数据库文件导入excel表格数据库中...

    如何实现Excel表格自动导入到数据库 库?是什么数据库?sql?access?mysql?我以sql2008为例子 1.打开SQL Server Management Studio-任务-数据 2. ...

  9. 使用phpexcel将excel表格的导入导出

    使用phpexcel将excel表格的导入数据库 1–使用composer安装phpexcel包 composer require phpoffice/phpexcel -vvv 2-控制器 //导入 ...

最新文章

  1. 灯泡亮度控制单片机_如何延长投影机灯泡使用寿命 延长投影机灯泡使用寿命方法【介绍】...
  2. 实时流处理框架Storm、Spark Streaming、Samza、Flink,孰优孰劣?!
  3. python2转python3代码_python2代码批量转为python3代码
  4. 谭浩强c语言规范化的指数形式,C语言程序设计谭浩强第四期末复习重点.docx
  5. [LeetCode-JAVA] Remove Linked List Elements
  6. aptitude_PHP Numbers Aptitude问题与解答
  7. python 进阶案例_【python3】while和for的进阶案例
  8. 统计学习方法读书笔记13-改进的迭代尺度法(优化算法)
  9. 《51单片机应用开发从入门到精通》——1.3 Keil uVision2集成开发环境
  10. python基础学习笔记1
  11. UFS系列六:UFS设备初始化和启动
  12. UINO优锘:数字孪生助力运维工程场景化可视化管理
  13. UDP头部结构,UDP校验和计算
  14. spring cloud 实现服务不间断
  15. int定义源码 python_【图片】Python 源码:int【西安网星软件吧】_百度贴吧
  16. 为什么按序发射只有RAW冲突?
  17. 记一次突然宕机重启服务器导致docker中redis无法启动的问题解决
  18. python function at 0x00000_python 问题求解,为什么会返回function variance at 0x7f3c022c8d70...
  19. DNF刷怪的按键精灵脚本,很久前写的,效果不好。。
  20. 【LWIP】tcp_receive函数分析

热门文章

  1. python for ArcGIS 绘制西安市板块地图
  2. Android简单计算器实现
  3. 数据集下载地址(转)
  4. C语言——数组练习题
  5. Java程序是如何运行的
  6. Kali从入门到出门-手记
  7. 退出cmd.exe或退出批处理文件
  8. seaborn散点图_Seaborn散点图–终极指南
  9. Xception简介
  10. K_均值聚类算法(算法设计与C代码实现)