controller
前端读取的key值为 @RequestParam("file") 中的参数(本文为file)
//导入模板
@ApiOperation("导入模板")
@PostMapping(value = "/importFile")
@AnonymousAccess
public List
service
public List
通过行列确定具体值
sheetAt 就是上边的 sheets.getSheetAt(i-1)
sheetAt.getRow(row).getCell(cell) 取到当前页具体某一个数据
//找第几行第几列的方法
//sheetAt为第几个sheet页
//row:行 从0开始
//cell:列 从0开始
public String getSheetValue(XSSFSheet sheetAt, int row, int cell) {
return getStringValue(sheetAt.getRow(row).getCell(cell));
}
//封装值转换成String的方法
public String getStringValue(XSSFCell getCell) {
String value = null;
if (getCell == null || "".equals(getCell.toString())) return value;
switch (getCell.getCellType()) {
case STRING: //string类型
value = getCell.toString();
break;
case NUMERIC: //数字类型
value = NumberToTextConverter.toText(getCell.getNumericCellValue());
break;
default:
break;
}
return value;
}
//封装值转换成BigDecimal的方法 --- 传具体单元格里的值
public BigDecimal getBigDecimalValue(XSSFCell getCell) {
String value;
if (getCell == null || "".equals(getCell.toString())) {
value = "0";
} else {
value = getStringValue(getCell);
}
return new BigDecimal(value);
}
//封装值转换成BigDecimal的方法 --- 传String类型
public BigDecimal getBigDecimalValue(String str) {
String value;
if (str == null || "".equals(str)) {
value = "0";
} else {
value = str;
}
return new BigDecimal(value);
}
//封装值转换成Integer的方法 --- 传具体单元格里的值
public Integer getIntegerValue(XSSFCell getCell){
String value;
if (getCell == null || "".equals(getCell.toString())) {
value = "0";
} else {
value = getStringValue(getCell);
}
return new Integer(value);
}
//封装值转换成Integer的方法 --- 传String类型
public Integer getIntegerValue(String str){
String value;
if (str == null || "".equals(str)) {
value = "0";
} else {
value = str;
}
return new Integer(value);
}
循环取行列
sheetAt.getPhysicalNumberOfRows() 一共多少行
XSSFRow row = sheetAt.getRow(i) 当前行
sheetAt.getRow(0).getLastCellNum() 一共多少列(默认第一行列 >= 其他行)
public String[][] getArrTwo(XSSFSheet sheetAt) {
String[][] arr;
//第一行为空时判断为空表
if (sheetAt.getRow(0) == null) {
return arr= null;
}
//创建二维数组
arr = new String[sheetAt.getPhysicalNumberOfRows()][sheetAt.getRow(0).getLastCellNum()];
// 循环获取每一行数据
for (int i = 0; i < sheetAt.getPhysicalNumberOfRows(); i++) {
XSSFRow row = sheetAt.getRow(i);
//循环获取每一列的值
for (int j = 0; j < row.getLastCellNum(); j++) {
arr[i][j] = getStringValue(row.getCell(j));
}
}
return arr;
}
整体
public List