前言
本教程主要介绍从Excel文件读取、向Excel文件写入、读取Excel数据到数据库、增加样式、应用场景等POI的核心知识及常用方法,并通过实际办公案例带你轻松实现Excel文件和Mysql数据库的数据交互。因为在学校项目中需要使用相关知识,在网上找了相关教程,写出了下面的一个小Demo,可以实现从数据库中导出数据到Excl文件中,以及能够从Excel中导入数据到数据库中!
准备工作
经过在百度收集的资料来看,基本使用的maven的方法来下载相关的jar包!我由于项目不使用Maven以及个人使用Maven不熟悉的相关原因,这个Demo就是用手动下载jar包然后导入!需要的jar如下:
核心代码
因为Demo使用的是三层架构的模式,这里就不具体介绍了,Demo可以直接在Github上下载!
文件导入
System.out.println("请输入导入文件的路径:"); String path = input.next(); List<Student> students=save(path); ss.saveStudent(students); System.out.println("当前数据已经全部存入数据库中!"); /** * 从Excel导入数据到数据库! * * @param path 需要传入的Excel的文件位置 * @return 返回一个实体类集和(我这里是用学生实体类) */ public static List<Student> save(String path) { List<Student> studentList = new ArrayList<Student>();//用于存取导入的学生信息 try { //获取工作簿 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(path); //获取工作表 XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0); //得到工作表的行数 int lastRow = xssfSheet.getLastRowNum(); //遍历 for (int i = 1; i <= lastRow; i++) { XSSFRow row = xssfSheet.getRow(i); //获取每一行,不为空的情况下,遍历每一个单元格 if (row != null) { List<String> list = new ArrayList<String>(); //在每一行中遍历每一个单元格 for (Cell cell : row) { if (cell != null) { cell.setCellType(CellType.STRING);//控制字符格式为String String value = cell.getStringCellValue(); if (value != null && !"".equals(value)) {//如果单元格中字符不为空添加到list集和中 list.add(value); } } } if (list.size() > 0) { //通过构造函数封装得到的数据 Student student = new Student(Integer.parseInt(list.get(0)), list.get(1), list.get(2)); studentList.add(student); } } } } catch (IOException e) { e.printStackTrace(); } return studentList; }
文件导出
System.out.println("请选择储存位置!"); String path = input.next(); List<Student> list = ss.selectAll(); export(list, path); private static void export(List<Student> list, String path) { //获取工作簿 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); //获取一个工作表,取名为学生 XSSFSheet sheet = xssfWorkbook.createSheet("学生"); //因为Excel的第一行不存储数据,为每一列的命名,一般是数据库的字段类似 XSSFRow row = sheet.createRow(0); row.createCell(0).setCellValue("编号"); row.createCell(1).setCellValue("姓名"); row.createCell(2).setCellValue("班级"); for (int i = 0; i < list.size(); i++) { //从第二行开始遍历 XSSFRow row1 = sheet.createRow(i + 1); row1.createCell(0).setCellValue(list.get(i).getId()); row1.createCell(1).setCellValue(list.get(i).getName()); row1.createCell(2).setCellValue(list.get(i).getCls()); } try { //通过文件输出流写入文件 FileOutputStream f = new FileOutputStream(path); //调用XSSFWorkbook的write()方法 xssfWorkbook.write(f); f.flush();//刷新 xssfWorkbook.close();//关闭资源 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
最后
防止知识遗忘,特记此文,若上出文章有错误,欢迎各位大佬斧正!
Github:https://github.com/iceloX/ExcelTest
版权声明:文章转载请注明来源,如有侵权请联系删除!
maven 还是挺方便的
哈哈哈哈哈!已经在学了,大佬见笑了
向博主学习,这个太深奥了
没有没有,这还是基本工