最近又要进行信息技术考试报名,其中导入考生照片这个环节比较繁琐,前几年写了一个小工具用来解决这个问题,今天分享出来,供大家交流使用,若发现问题或者需要解答及时交流沟通
1、首先登录榆林市中考网上信息管理平台
2、在【功能菜单】依次打开【八年级报名管理】【报名考生信息管理】
3、在【报名考生信息管理】页面点击右上角【下载报名信息】,在选择框中选择【全部考生报名信息】、【下载考生照片】进行下载,PS:照片下载后按照提示输入解压密码进行解压
4、【解决思路】因为导出的学生照片以学生中考的“报名号”命名,但是在信息技术考试采集系统中需要以学生的“学籍号”命名,所以需要一个“报名号”与“学籍号”的映射,然后批量进行改名,在上面导出的“全部考生报名信息”的excel中,刚好有它们之间的映射关系,如下:
5、实现代码 (需要导入Jar包—poi,自行下载导入)
/**
* 读取EXCEL文件内容,返回Map
* @param excelPath Excel路径
*/
public static Map readFileToMap(String excelPath) {
Map<String, String> map = new HashMap<>();
try {
FileInputStream inputStream = new FileInputStream(excelPath);
Workbook workbook = new HSSFWorkbook(inputStream);
//读取Excel前两列的的数据即报名号与学籍号,将其作为Key与Value添加到Map中
Sheet sheet = workbook.getSheetAt(0);
int Rowcout = sheet.getPhysicalNumberOfRows();
for (int i = 2; i < Rowcout; i++) {
Row row = sheet.getRow(i);
Cell cell = row.getCell(0);
Cell cell1 = row.getCell(1);
map.put(cell.toString(), cell1.toString());
System.out.println(cell + "——>" + cell1);
}
inputStream.close();
return map;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
*@description: 通过文件路径,修改该路径下所有文件的名字
* @param path 文件夹路径
*/
public static void changeFileName(String path, Map idMap) {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (null == files || files.length == 0) {
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
changeFileName(file2.getAbsolutePath(),idMap);
} else {
String filePath = file2.getAbsolutePath();
String imgName=filePath.substring(filePath.lastIndexOf("\\")+1,filePath.length()-4);
String NewName = (String) idMap.get(imgName);
if(NewName!=null){
String fileName = filePath.substring(0, filePath.lastIndexOf("\\")) + "\\" +NewName+ filePath.substring(filePath.lastIndexOf("."));
System.out.print("将照片名称从:["+imgName+"]重命名为:["+NewName+"]");
File oriFile = new File(filePath);
boolean b = oriFile.renameTo(new File(fileName));
System.out.println(b);
}else {
System.out.println("当前照片名称为:["+imgName+"]新的照片名称,跳过重命名!!!");
}
}
}
}
} else {
System.out.println("该路径不存在");
}
}
//Excel路径
private static String EXCELPATH = "D:\\Desktop\\2022年学考报名榆林市XX区XX中学全部报名考生信息表.xls";
//照片路径
private static String PHOTOPATH="D:\\Desktop\\2022年榆林市XX区XX中学学考考生照片";
//测试
public static void main(String[] args) {
changeFileName(PHOTOPATH,readFileToMap(EXCELPATH));
}
6、如果无代码基础,我做了一个GUI小工具,打包成Jar包,仅供大家交流使用,禁止用于其他用途(需要系统安装JAVA环境且JDK1.8以上,如何安装自行百度)。分别选择好图片路径与Excel路径即可!