前言:
最近在做迁移数据的工作,旧系统使用的省市区编码 和新系统使用的新版的有差异 需要将旧的转换新的 ,我这边想到的思路是 吧旧的和新的对应关系放到Map集合中 来进行操作 旧的为K新的为V 如果在库中查出来旧的在map中存在 就返回V 如果不存在就返回本身,但是发生冲突的省市区很多 不能一个一个的add到map中 于是想到了个 把对应的关系放到Excel表格中 使用poi 读取 再放到map中
废话不多说 上代码
第一步引入依赖:
在这里插入代码片
``` <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>RELEASE</version>
</dependency>
第二步 书写代码
public String updateCountCodePoi(String codeAndName) {
//存放冲突的map
Map<String, String> codeMap = new HashMap<>();
// 流读取文件
FileInputStream is = null;
try {
is = new FileInputStream(new File("d:\\aaa.xlsx"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 根据流创建文件
Workbook wb = null;
try {
wb = new XSSFWorkbook(is);
} catch (IOException e) {
e.printStackTrace();
}
Sheet sheet = wb.getSheetAt(0);//获取第一张表
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);//获取索引为i的行,以0开始
String key = row.getCell(0).getStringCellValue();//获取第i行的索引为0的单元格数据
String value = row.getCell(1).getStringCellValue();//获取第i行的索引为0的单元格数据
System.out.println("测试传来的值"+key + value);
codeMap.put(key,value);
}
try {
wb.close();
} catch (IOException e) {
e.printStackTrace();
}
//String codeAndName = "130182河北省,石家庄市,藁城市"; //假设传来的参数
String codeName = null; //假设返回的值
//遍历map
for (String key : codeMap.keySet()) {
System.out.println("K== " + key + "V== " + codeMap.get(key));
//校验传来的key是否存在map中
if (codeAndName.equals(key)) {
codeName = codeMap.get(codeAndName);
return codeName;
} else {
codeName = codeAndName;
}
}
System.out.println("测试返回值"+codeName);
return codeName;
}
第三步 查看Excel表格内容:
简单使用poi导入 可以只复制部分代码
如有大神发现bug 可以指点 一二
博客只为记录学习使用