#工具类
最近老是开发协助批量更新表操作,每次都得拿excel一个一个复制到sql中,一气之下,搞了个工具类,内容是:获取一个Excel中的指定列的内容拼接成字符串直接放入sql中。
场景:让我批量更新用户的角色,扔给我一个excel,我需要拿文件中的名称去查id然后更新,然后得一个一个搞字符串比较繁琐,然后写了一个工具类。
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public static void main(String[] args) throws IOException {
String s = extractColumnData("C:\\Users\\86137\\Desktop\\userId.xlsx", 0);
System.out.println(s);
}
public static String extractColumnData(String filePath, int columnIndex) throws IOException {
FileInputStream file = new FileInputStream(new File(filePath));
// 创建工作簿对象
Workbook workbook = new XSSFWorkbook(file);
// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
StringBuilder sb = new StringBuilder();
// 遍历行
for (Row row : sheet) {
// 获取指定列的数据
Cell cell = row.getCell(columnIndex);
String s = cellToString(cell);
if (s.contains(".")){
s=s.substring(0,s.indexOf("."));
}
// 将数据转换为字符串,并添加到StringBuilder中
sb.append("'" + s + "'").append(",");
}
// 删除最后一个逗号
sb.setLength(sb.length() - 1);
workbook.close();
file.close();
return sb.toString();
}
private static String cellToString(Cell cell) {
if (cell == null) {
return ""; // 或者返回null,根据实际需求来决定
}
// 根据单元格类型返回相应的字符串表示形式
switch (cell.getCellType()) {
case 1:
return cell.getStringCellValue();
case 0:
return Double.toString(cell.getNumericCellValue());
case 4:
return Boolean.toString(cell.getBooleanCellValue());
case 2: // 如果它是公式类型,那么我们解析它(这将是一个未来可能的性能瓶颈)
return cell.getCellFormula();
default: // 其他所有类型都映射到空字符串(例如,错误类型)
return ""; // 或者返回null,根据实际需求来决定
}
}
}
生成结果: 直接复制到sql中,美滋滋!!!!!!!!