日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSM框架下实现导入功能

發布時間:2025/5/22 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSM框架下实现导入功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

何叫導入?簡單說,導入就是把excel表格里的數據插入到數據庫里。我這里做的是支持.xls和.xlsx格式。

因為是自己做案例記錄,那些jar包什么的就不細說了,主要講實現和步驟,看代碼:

?

先在你的項目文件中創建一個excel表格模板,方便用戶知曉導入的格式和文件內容:

?

?

一、頁面中導入按鈕

?

二、點擊按鈕跳轉到導入頁面,這里直接用的標簽跳轉,<%@ include file="importHarness.jsp"%>

?

?

?

三、點確認時先做下驗證,文件格式、類型什么的

?

$('#importHarnessForm')為form表單id,(".hp_form_error")為確認按鈕上方一個隱藏的DIV的class,顯示提示信息用的。

?

四、點擊確認按鈕 ?傳值 ?后臺代碼:

?

?

Controller類:

?

@RequestMapping(value = "/import" , method = RequestMethod.POST)
@ResponseBody
public String xlsImport(@RequestParam("xlsfile") MultipartFile file){
// 返回string類型為解決ie9兼容性
ResponseBase responseBase = new ResponseBase();
if (file.isEmpty()) {
responseBase.setMessage("'文件內容不能為空'");
responseBase.setStatus(DATA_VALIDATION_ERROR);
return responseBase.toString();
}
//文件名
String fileName = file.getOriginalFilename();
if (fileName == null || (!fileName.endsWith(".xls") && !fileName.endsWith(".xlsx"))) {
responseBase.setMessage("'文件格式不正確'");
responseBase.setStatus(DATA_VALIDATION_ERROR);
return responseBase.toString();
}
InputStream inputStream = null;
try{
inputStream = file.getInputStream();
Workbook wb = null;
if (fileName.endsWith(".xlsx")) {
wb = new XSSFWorkbook(inputStream);
}else {
wb = new HSSFWorkbook(inputStream);
}
//獲取第一個工作表對象
Sheet sheet = wb.getSheetAt(0);
//行號
int rowNum = sheet.getLastRowNum();
//最大導入數
if (sheet.getLastRowNum() > 1000) {
responseBase.setMessage("'數據最多可導入1000條");
responseBase.setStatus(DATA_VALIDATION_ERROR);
return responseBase.toString();
}
Subject currentUser = SecurityUtils.getSubject();
Session session = currentUser.getSession();
Integer uid = (Integer) session.getAttribute("userId");
List<HarnessDTO> hpList = new ArrayList<HarnessDTO>();
int count = 0; //成功條數
int ercount = 0; //失敗條數
for (int i = 1; i <= rowNum; i++) {

HarnessDTO hp = new HarnessDTO();
Row row = sheet.getRow(i);
String brandId = FileOperateUtil.getCellValue(row.getCell(0));
String seriesId = FileOperateUtil.getCellValue(row.getCell(1));
String modelId = FileOperateUtil.getCellValue(row.getCell(2));
String harnessInfo = FileOperateUtil.getCellValue(row.getCell(3));

if(StringUtils.isNotBlank(brandId) && StringUtils.isNotBlank(seriesId) && StringUtils.isNotBlank(harnessInfo)){
int rowCount = harnessPositionService.selectCount(brandId, seriesId, modelId);
if(rowCount >= 0){
hp.setBrandId( brandId );
hp.setSeriesId( seriesId) ;
hp.setModelId("".equals(modelId) ? "-1" : modelId);
hp.setHarnessInfo(harnessInfo);
hp.setStatus("1");
hp.setEditUser(String.valueOf(uid));
hpList.add(hp);
count ++;
}else{
ercount++;
}
}else{
responseBase.setMessage("'車輛品牌、型號和線束管理不能為空,導入失敗,請重新導入'");
responseBase.setStatus(DATA_VALIDATION_ERROR);
return responseBase.toString();
}
}
harnessPositionService.insertCount(hpList);
if (count == 0) {
responseBase.setStatus(DATA_VALIDATION_ERROR);
}
responseBase.setMessage("'已成功導入" + count + "條,失敗" + ercount + "條'");
}catch(Exception e){
logger.error("文件格式不符合要求,導入失敗,請重新導入 ", e);
responseBase.setMessage("'文件格式不符合要求,導入失敗,請重新導入'");
responseBase.setStatus(DATA_VALIDATION_ERROR);
return responseBase.toString();
}finally{
try {
if (inputStream != null) {
inputStream.close();
inputStream = null;
}
} catch (IOException e) {
logger.error("關閉文件流失敗", e);
responseBase.setMessage("'關閉文件流失敗'");
responseBase.setStatus(DATA_VALIDATION_ERROR);
return responseBase.toString();
}
}
return responseBase.toString();
}

?

Service類:

?

實現類:

?

?

DAO層:

?

?

SQL:

?

?

這是實現的全部代碼,值得注意的是Controller類獲取行數的時候,int rowNum = sheet.getLastRowNum(); ?往往會出現如下情況:

獲取到的行數要大于實際表格中(有數據)的行數,自己解決辦法

1.在循環中,自己再嵌入一層循環,判斷獲取到的行數是否為空,為空跳出循環執行下一次循環(continue)

2.偷懶的方法,創建的模板,手動把模板下面的行和列刪除、清空內容一次,選多點行數,幾千行隨你選,這樣導入的時候就不會出現那種情況啦(只是針對導入模板的用戶 ?選此方法吧)

?

轉載于:https://www.cnblogs.com/yzw23333/p/7209851.html

總結

以上是生活随笔為你收集整理的SSM框架下实现导入功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。