一般导入一个excle需要先规定一张导入模板
/**
*
*/
/**
*下载导入模板
* @param request
* @param response
*/
@RequestMapping(value = "/exportTemlate", method = RequestMethod.GET)
@ResponseBody
private void exportTemlate(HttpServletRequest request, HttpServletResponse response){
String filePath = SldaController.class.getClassLoader().getResource("templates/ck_temlate.xls").getPath(); //ck_temlate.xls,该文件即将一个空表,改成该名字,放到对应路径下
String[] handers={"仓库名称","xxx","xxx","xxx"}; //可以有多个值
List<String[]> downData=new ArrayList<>();
String []第一个数组={"xx","xxx","xxxx"};
...
downData.add(第一个);
downData.add(第二个);
downData.add(第三个);
downData.add(第四个);
String[] downRows={};//这里可以指定导入的字段限定的值的对应位置{"2","5","6","7"}
ExcelUtils.createExcelTemplate(filePath,handers,downData,downRows);
ExcelUtils.getExcel(filePath,"仓库档案导入模板",response,request);
}
//常量
private final static String XLS = "xls";
private final static String XLSX = "xlsx";
/**
* 导入
* @param file
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
@ResponseBody
public JSONObject importExcel(@RequestPart(value = "file", required = false) MultipartFile file) {
int count = 0;
// 1、用HSSFWorkbook打开或者创建“Excel文件对象”
// 2、用HSSFWorkbook对象返回或者创建Sheet对象
// 3、用Sheet对象返回行对象,用行对象得到Cell对象
// 4、对Cell对象读写。
// 获得文件名
try {
Workbook workbook = null;
if (file == null) {
return JSONResultUtil.getJSONResult(CommonConstants.fail, ErrCode.PARAMETER_EMPTY.getCode(),
ErrCode.PARAMETER_EMPTY.getMessage(), null);
}
String fileName = file.getOriginalFilename();
if (fileName.endsWith(XLS)) {
// 2003
workbook = new HSSFWorkbook(file.getInputStream());
} else if (fileName.endsWith(XLSX)) {
// 2007
workbook = new XSSFWorkbook(file.getInputStream());
} else {
return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "文件不是Excel文件", null);
}
Sheet sheet = workbook.getSheetAt(0);
if (sheet == null) {
return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "请导入模板", null);
}
int rows = sheet.getLastRowNum();// 指的行数,一共有多少行+
if (rows == 0) {
return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "无数据", null);
}
// 判断是否是模板,不是打回
Iterator<Cell> cells = sheet.getRow(0).cellIterator();
StringBuilder str = new StringBuilder();
while (cells.hasNext()) {
str.append(CellUtils.getDataValue(cells.next()));
}
String[] th = {"仓库名称","xxx","xxx"};
for (String s : th) {
if (!str.toString().contains(s)) {
return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "请导入模板", null);
}
}
for (int i = 1; i <= rows + 1; i++) {
// 读取左上端单元格
Row row = sheet.getRow(i);
// 行不为空
if (row != null) {
// **读取cell**
Warehouse warehouse = new Warehouse();
// 仓库名称
String name = CellUtils.getCellValue(row.getCell(0));
if (StringUtils.isBlank(name)) {
return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "第" + (i + 1) + "行第1列 塘口名称 为空",
null);
}
//判断仓库名称是否重复
Warehouse z = warehouseService.findcankagain(name);
if(z!=null){
return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "第" + (i + 1) + "行第1列 塘口名称 已存在",
null);
}
warehouse.setCkname(name);
warehouse.setId(UuidGenerator.generate32UUID());
count = warehouseService.save(warehouse);
if (count == 0) {
return JSONResultUtil.getJSONResult(CommonConstants.fail, ErrCode.OPERATE_FAIL.getCode(),
ErrCode.OPERATE_FAIL.getMessage(), null);
}
}
}
return JSONResultUtil.getJSONResult(null);
} catch (Exception e) {
e.printStackTrace();
return JSONResultUtil.getJSONResult(CommonConstants.fail, ErrCode.SYSTEM_ERROR.getCode(),
ErrCode.SYSTEM_ERROR.getMessage(), null);
}
}