java怎么将excel中string类型在导入到数据库时转换成表中对应的id
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么将excel中string类型在导入到数据库时转换成表中对应的id相关的知识,希望对你有一定的参考价值。
在将excel导入过程中,要导入的数据库中的表的字段是与其他表相关联的id,excel中是文字形式,到导入时将文字与那张关联的表相对应并取出id放入要导入的表中,请问怎么实现
首先你得解析excle,再封装实体,赋值对应的字段,存入数据库,类似下面的这个:
public static void readExcel(String filePath)Products products = new Products();
SqlSession sqlSession = MybatisSqlSessionFactory.getSession();
ProductsMapper productsMapper = sqlSession.getMapper(ProductsMapper.class);
Map<Integer, String> map1 = FileUtil.readfile(filePath, null);
for(int i=0 ; i < map1.size(); i++)
//获取工作表
Workbook workbook = ExcelUtil.reWorkbook(map1.get(i));
//获取sheet个数
int shNum = ExcelUtil.reExcelSheet(workbook);
for (int num = 0; num < shNum; num++)
//获取行数
int rowNum = ExcelUtil.reExcelSheetRowNum(workbook, num);
if(rowNum != 0)
for (int rnum = 0; rnum <= rowNum; rnum++)
//获取列数
int cellNum = ExcelUtil.reExcelSheetCellNum(workbook, num, rnum);
if(cellNum != 0)
String value = ExcelUtil.reExcelValue(workbook, num, rnum, 0, false);
products.setProductcode(value);
products.setActivestatus("1");
int code = productsMapper.updateByProductCode(products);
sqlSession.commit();
if(code != 0)
logger.info("读取Excel的行数为,更新数据条数为",rnum,code);
logger.info("读取Excel完成");
参考技术A 问题描述的有点不清楚。你EXCEL中是什么样的数据?表的ID,那么直接读取就好了啊,跟关联表有什么关系。追问
就是大表中比如说有个部门这个字段,而各个部门存在部门这个表中,大表添加时取的是部门表的id来显示名称,而excel表中也有部门这个字段,但是是文字,需要与部门表的部门对应并取出id,在导入时存入大表中
追答简单啊。你把部门表的数据取出来,循环一下,存放到一个Map中去,文字(也就是部门名称)作为一个key,然后部门id作为value。
然后再读取EXCEL的时候,把读取到的部门名称,在Map中取一下不就行了。前提肯定是EXCEL中的名称跟数据库中的名字完全一致。
能不能大概写一下代码,不是很会
追答额,这个不太好写啊。我写个大概吧。
// 导入数据public void importExcel()
// 获取部门(假如你的部门类叫Dept)
List<Dept> deptList = ......;
Map<String,String> deptMap = new HashMap<String,String>();
for(Dept d : deptList)
deptMap.put(d.getDeptName,d.getDeptId());
// 读取EXCEL。。。略
// 读取部门cell....
String deptNameCell = 。。。。;
String deptId = deptMap.get(deptNameCell);
就这样吧,我写的越多,你会的就越少。
以上是关于java怎么将excel中string类型在导入到数据库时转换成表中对应的id的主要内容,如果未能解决你的问题,请参考以下文章