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的主要内容,如果未能解决你的问题,请参考以下文章

Easypoi excel导入时日期校验

如何将jsp 中的数据导入到excel表格 中

如何用java将excel导入oracle

java中怎么把excel导入数据库

java怎么把excel文件导入到web网页上显示

java怎么把excel文件导入到web网页上显示