销售网站开发实践报告,竞价系统,做试用的网站,济南自助建站目前的需求是数据库字段固定#xff0c;而excel的字段不固定#xff0c;需要实现excel导入到一个数据库内。
首先是前端的字段匹配#xff0c;显示数据库字段和表头字段
读取表头字段#xff1a;
我这里实现的是监听器导入#xff0c;需要新建一个listen类。
读Excel …目前的需求是数据库字段固定而excel的字段不固定需要实现excel导入到一个数据库内。
首先是前端的字段匹配显示数据库字段和表头字段
读取表头字段
我这里实现的是监听器导入需要新建一个listen类。
读Excel | Easy Excel 官网
其中用到的主要方法还有hasNextdoAfterAllAnalysed等
invoke按照每一行读取invokeHead读取第一行表头 将表头的字段返回给前端同时我把后端的字段用数组写死在前端了也可以后代传
设置前端展示的表头 按照前端写定的字段按顺序展示 结果我的表头是0到31排版没排好 然后把前端对应的映射传给后端: 这里的fielMapping是自定义的一个map因为我的excel表头是中文而数据库是英文
后端通过反射将值设置在映射的字段中在invoke中遍历单元格实现 for (Map.EntryInteger, Cell entry : rowMap.entrySet()) {Integer index entry.getKey();ReadCellData? cellData (ReadCellData?) entry.getValue();// 获取当前单元格的字符串值String cellValue cellData.getStringValue();
// System.out.println(索引: index , 单元格值: cellValue);// 获取当前列的表头名称String header headers.get(index); // 从保存的表头中获取
// System.out.println(表头: header);// 根据表头名称获取对应的字段名String fieldName fieldMapping.get(header);
// System.out.println(找到字段名: fieldName);if (fieldName ! null) {// 使用反射将值设置到实体类中setFieldValue(data, fieldName, cellValue);
// System.out.println(已设置值: cellValue 到字段: fieldName);} else {
// System.out.println(未找到对应字段: cellValue);}}
setFieldValue是自己写的反射方法因为我的字段有时间要判断一下类型是否等于Date.Class然后对日期进行解析。