java excel 批量导入
java excel 批量导入/*** 解析上传的excel, 默认只解析第一张Sheet** @param fileexcel* @param startRow 数据开始行* @return List<String [ ]>* @throws IOException*/public static List<String[]> getExcelData(Multipart
·
java excel 批量导入
/**
* 解析上传的excel, 默认只解析第一张Sheet
*
* @param file excel
* @param startRow 数据开始行
* @return List<String [ ]>
* @throws IOException
*/
public static List<String[]> getExcelData(MultipartFile file, int startRow) throws IOException {
int resultSize = 0;
ArrayList<String[]> resultData = new ArrayList<>(resultSize);
if (!checkFile(file)) {
//log.error("上传的excel文件格式有问题");
return resultData;
}
//获得Workbook工作薄对象
Workbook workbook = getWorkBook(file);
if (workbook != null) {
//获取第一张sheet工作表
Sheet sheet = workbook.getSheetAt(0);
if (sheet == null) {
return resultData;
}
// 重新初始化List结果大小
resultSize = sheet.getLastRowNum() + 1;
//获得当前sheet的开始行
int firstRowNum = sheet.getFirstRowNum();
//获得当前sheet的结束行
int lastRowNum = sheet.getLastRowNum();
//循环除了startRow的所有行,如果要循环除第一行以外的就firstRowNum+1
for (int rowNum = firstRowNum + startRow; rowNum <= lastRowNum; rowNum++) {
//获得当前行
Row row = sheet.getRow(rowNum);
if (rowIsEmpty(row)) {
break;
}
//获得当前行的开始列
int firstCellNum = row.getFirstCellNum();
//获得当前行的列数
int lastCellNum = row.getLastCellNum();
String[] cells = new String[lastCellNum];
//循环当前行
for (int cellNum = firstCellNum; cellNum < lastCellNum; cellNum++) {
Cell cell = row.getCell(cellNum);
cells[cellNum] = getCellValue(cell);
}
resultData.add(cells);
}
workbook.close();
}
return resultData;
}
使用上述方法将前台传来的 excel文件 转换为一个 List<String[]> ,然后循环List<String[]> 将 excel中的数据写入数据库。
更多推荐
已为社区贡献1条内容
所有评论(0)