2024-09-18 04:06:59
首先你得解析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完成");
}
}
2024-09-18 17:27:30
就是大表中比如说有个部门这个字段,而各个部门存在部门这个表中,大表添加时取的是部门表的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);
}
就这样吧,我写的越多,你会的就越少。