通用的导入excel模板样式
1.controller
/***导入Excel表*/@RequestMapping(value="/importEmp",method = RequestMethod.POST)public ResponseEntity<?> importEmp(@RequestParam("file") MultipartFile file)throws Exception {//判断文件是否为空if (file == null) {return new ResponseEntity("文件为空", HttpStatus.OK);}//获取文件名String name = file.getOriginalFilename();//进一步判断文件是否为空(即判断其大小是否为0或其名称是否为null)long size = file.getSize();if (name == null || ("").equals(name) && size == 0) {return new ResponseEntity("文件为空", HttpStatus.OK);}// 获取当前导入的储存对象Expert expert =new Expert();List list =new ArrayList<Expert>();//通过这个方法 ,将excel里的数据 以list列表方式返回List list1 = excelService.batchImport(name, file, expert, list);for (int i=0;i<list1.size();i++) {expertService.insert((Expert) list1.get(i));}return new ResponseEntity("成功", HttpStatus.OK);}
2.service.impl
public List batchImport(String name, MultipartFile file, Object object,List list) throws NoSuchFieldException, IllegalAccessException {Workbook workbook = null;try {// 判断是哪种后缀boolean isExcel2003 = name.endsWith("xls")?true:false;if(isExcel2003){workbook = new HSSFWorkbook(file.getInputStream());}else{workbook = new XSSFWorkbook(file.getInputStream());}} catch (Exception e) {e.printStackTrace();}Sheet hssfSheet = workbook.getSheetAt(0); //可能多个execl表格Row hssfRow = hssfSheet.getRow(0); //第一行数据//通过第一行的名称,通过数据库表查询对应的字段名for (int i = 0; i < hssfRow.getPhysicalNumberOfCells(); i++) {String cell = hssfRow.getCell(i).getStringCellValue();Excel excel = selectById(cell);if (excel == null) {new IllegalAccessException("没找到对应的key");}hssfRow.getCell(i).setCellValue(excel.getKey());}for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {for (int i = 0; i < hssfRow.getPhysicalNumberOfCells(); i++) {String stringCellValue = hssfRow.getCell(i).getStringCellValue();Cell cell = hssfSheet.getRow(rowNum).getCell(i);Class<?> aClass = object.getClass();Field field = aClass.getDeclaredField(stringCellValue);field.setAccessible(true);if (cell.getCellTypeEnum() == CellType.NUMERIC) {field.set(object,String.valueOf(cell.getNumericCellValue()));}if (cell.getCellTypeEnum() ==CellType.STRING) {field.set(object,cell.getStringCellValue());}}list.add(object);}return list;}
3.数据库定义
通过查询value 找到对应的key 数据库字段
4.pom.xml
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>
总结:
通过sql ,key value的储存,查找想要的key 的字段名 ,在通过对应的字段名来储存到list里
后续可以修改对应的sql里面的value数据。来控制所有的导入
通用的导入excel模板样式相关推荐
- python excel模板 生成excel表格_python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图...
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 #coding=utf-8 from openpyxl importload_workbookfro ...
- struts2导入excel模板_「微干货」“人员其他数据导入”应用介绍
前提概要 人员档案资料维护多种多样,经常碰到已经运行一段时间,并且人员档案的基本信息已维护好了:此时,又要补充诸如"教育经历"类似的多行数据,脑壳疼,如何录入可以简便,让我们一起来 ...
- 导入excel 模板
其实导入的话 其实很简单 根据模板导入更加单 首先我们需要获取前端的文件 前端一般用multipart/form-data 所有我们接收的话就用 MultipartHttpServletRequest ...
- java 分析excel模板_java如何读取Excel简单模板
场景:对于经常需要导入excel模板或数据来解析后加以应用的,使用频率非常之高,做了一个比较稳定的版本,体现在这些地方 工具:org.apache.poi 使用前必须了解这些: 1.要解析,那肯定先判 ...
- SXSSFWorkbook使用——使用excel模板
public class Hello {public static void main(String[] args) {// 1.导入excel模板String targetPath = rs.get ...
- 微信小程序学习day02-WXSS 模板样式
目录 WXSS 模板样式-介绍: 1. 什么是 WXSS: 2. WXSS 和 CSS 的关系: WXSS 模板样式 - rpx : 2. rpx 的实现原理: 3. rpx 与 px 之间的单位换算 ...
- java excel 模板_java对Excel模板的读取
java如何读取Excel简单模板 场景:对于经常需要导入Excel模板或数据来解析后加以应用的,使用频率非常之高,做了一个比较稳定的版本,体现在这些地方 工具:org.apache.poi 使用前必 ...
- php单元格字体颜色,PHPExcel API接口用法大全,按模板导入excel,美化excel,导出图片,设置单元格字体颜色背景色边框,合并单元格,设置行高列宽...
PHPExcel API接口用法大全,按模板导入excel,美化excel,导出图片,设置单元格字体颜色背景色边框,合并单元格,设置行高列宽 2020-08-31 85 一:读取excel表模板$ph ...
- 【vue+springboot】excel模板下载、导入功能实现
基于VUE+SpringBoot实现excel模板下载.导入功能 背景 最近在工作中经常遇到批量导入的功能,而且前端还要提示导入成功几条.失败几条.哪一条数据重复.是哪一条导入的数据出现问题等,抽空写 ...
最新文章
- 如何通过结构化智能体完成物理构造任务?| 技术头条
- 微信小程序-canvas绘制文字实现自动换行
- P3163 [CQOI2014]危桥
- spring boot+mybatis 系列
- 20170813xlVBA跨表筛选数据
- 在线数据链路跟踪的平台化发展及思考
- Android中转到定义怎么,Android中添加自己的模块 【转】
- matlab幻方变换_幻方变换加密数字全息图
- 【iOS】lipo otool 动、静态库
- 华硕a53s拆机图解_华硕a53s_拆机教程_图解_20140228更正
- spring 解决循环依赖
- 根据经纬度查询具体地址
- 乐鑫ESP32模组如何查看内部flash芯片支持的工作模式(QIO、QOUT、DIO、DOUT)?
- Win7下eclipse ADT调试cocos2dx-lua工程
- javax.crypto.Cipher类--加密和解密
- 对计算机专业英语的建议,中职计算机专业英语教学现况与建议论文
- atmel c keil 包_Atmel SAM D21开发板试用心得 ——利用Keil5,全速运行
- spring中遇到的java.lang.ClassCastException中cannot be cast to报错(初学)
- plc是一种工业控制用的专用计算机,PLC(可编程控制器)与MC(微机)控制的区别
- 通信专业顶刊_通信类顶级会议及期刊