关于Excel表格的导入
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解析
解析按照以下几个步骤来:
- 获取文件
- 读取文件,判断文件类型
//读取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;}
- 开始解析数据,解析由sheet–>row–>cell的顺序
- 保存数据
@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表格的导入相关推荐
- python导入excel表格-Python 将Excel表格数据导入MySQL数据库
今天分享一个刚刚完成的Python脚本,一个实用的小技能,就是利用Python代码,将EXCEL表格数据导入到MySQL数据库中!话不多说,下面代码示例. Excel表格数据.jpg 1示例代码: i ...
- PL/SQL Developer将Excel表格数据导入表格
说明,在将excel表格数据导入之前,需要创建一个对应的表. 一.打开PL/SQL Developer之后,选择tools(工具)---ODBC Imoprter(ODBC导入器) 二.选择导入文件的 ...
- Excel表格数据导入
开发工具与关键技术:vs2015 MVC 作者:陈星宇 撰写时间:2019.5.1 当我们学会新增时,都是一条一条数据的新增,当我们需要大量的数据时,我们不妨增加点新东西那就是导入功能,我们来讲一讲关 ...
- 基于SpringBoot+EasyExcel+vue3实现excel表格的导入和导出
目录 基于SpringBoot+EasyExcel+vue3实现excel表格的导入和导出 一.导入和导出 二.导出数据为excel实现过程 三.将excel中的数据导入到数据库中 基于SpringB ...
- 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...
如何把excel里的表导入到oracle里 使用第三方工具吧,toad之类的 一个excel表格中有多个sheet,如何将其导入oracle数据库 户和要用DBA 最简单得建用户: create us ...
- 使用python将excel表格通讯录导入手机通讯录
使用python将excel表格通讯录导入手机通讯录 核心问题: 安卓手机使用的通讯录文件格式为.vcf (应该是vCard 格式),这种格式的文件可以直接使用手机通讯录打开,导入手机通信录. 我们需 ...
- mysql 命令导入excel,【mysql命令导入excel表】excel表格怎样导入数据库
怎么把excel里的数据导入数据库中的表中 打开企业管理器开要导入数数据库,在表上按右键,所务-->导入数据,弹出DTS导入/导出向导,按 下一步 , 2.选择数据源 Microsoft Exc ...
- oracle数据库表excel文件位置,“如何将excel表格数据导入到oracle数据库对应的表中?“数据库文件导入excel表格数据库中...
如何实现Excel表格自动导入到数据库 库?是什么数据库?sql?access?mysql?我以sql2008为例子 1.打开SQL Server Management Studio-任务-数据 2. ...
- 使用phpexcel将excel表格的导入导出
使用phpexcel将excel表格的导入数据库 1–使用composer安装phpexcel包 composer require phpoffice/phpexcel -vvv 2-控制器 //导入 ...
最新文章
- 灯泡亮度控制单片机_如何延长投影机灯泡使用寿命 延长投影机灯泡使用寿命方法【介绍】...
- 实时流处理框架Storm、Spark Streaming、Samza、Flink,孰优孰劣?!
- python2转python3代码_python2代码批量转为python3代码
- 谭浩强c语言规范化的指数形式,C语言程序设计谭浩强第四期末复习重点.docx
- [LeetCode-JAVA] Remove Linked List Elements
- aptitude_PHP Numbers Aptitude问题与解答
- python 进阶案例_【python3】while和for的进阶案例
- 统计学习方法读书笔记13-改进的迭代尺度法(优化算法)
- 《51单片机应用开发从入门到精通》——1.3 Keil uVision2集成开发环境
- python基础学习笔记1
- UFS系列六:UFS设备初始化和启动
- UINO优锘:数字孪生助力运维工程场景化可视化管理
- UDP头部结构,UDP校验和计算
- spring cloud 实现服务不间断
- int定义源码 python_【图片】Python 源码:int【西安网星软件吧】_百度贴吧
- 为什么按序发射只有RAW冲突?
- 记一次突然宕机重启服务器导致docker中redis无法启动的问题解决
- python function at 0x00000_python 问题求解,为什么会返回function variance at 0x7f3c022c8d70...
- DNF刷怪的按键精灵脚本,很久前写的,效果不好。。
- 【LWIP】tcp_receive函数分析