java maven导入导出_Java +EasyUI+SpringMvc实现Excle导入导出(上)
標簽:
前言
先介紹下項目的開發環境,采用java開發語言進行開發,前臺UI使用的是EasyUI框架,接下來是SpringMvc與Ejb結合來開發,整個項目管理采用的是Maven管理,服務器用的是Jboss6.2.0企業版。
正文
配置
對于Excel上傳文件我們首先要引入commons-fileupload.jar包,由于我們的項目采用Maven進行項目管理,所以對于jar包的引入是在pom.xml文件中添加的依賴,添加commons-fileupload.jar的坐標:
commons-fileupload
commons-fileupload
1.3.1
由于后臺代碼的ExcelUtil工具類所在的項目不再當前的web項目中,而在itoo-exam-too項目中,因此我們需要將ExcelUtil工具類所在的itoo-exam-too項目進行引入,也就是在maven的pom.xml文件中添加itoo-exam-too的項目依賴:
com.tgb
itoo-exam-tool
0.0.1-SNAPSHOT
接下來SpringMvc的配置文件也需要做些配置,這樣可以將前臺文件進行解析,傳到后臺:
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
具體實現
Excel的導入我們可以進行分解,包括三個步驟:
1.上傳Excel文件
2.讀取Excle文件中的數據,將Excle數據轉化成list集合
3.將list集合存入數據庫
首先我們開始看我們前臺easyui上傳Excle文件的代碼,采用的是一個form表單,表單里包含一個easyui的上傳文件的控件easyui-filebox:
選擇文件:
導入題庫
前臺代碼比較簡單,我們使用是EasyUI的filebox進行文件上傳,這里需要注意的是form表單的enctype屬性必須是""multipart/form-data",接下來我們用js代碼對Excle的格式進行基本的校驗,然后將文件提交到后臺Controller,
//導入excelfunction uploadExcel(){
//得到上傳文件的全路徑
var fileName= $('#uploadExcel').filebox('getValue');
//獲取題型
var id= $('#questionType').combobox('getValue');
var questionTypes=encodeURI(id);
if(questionTypes !=""){
//進行基本校驗
if(fileName==""){
$.messager.alert('提示','請選擇上傳文件!','info');
}else{
//對文件格式進行校驗
var d1=/\.[^\.]+$/.exec(fileName);
if(d1==".xls"){
//獲取題型
var id= $('#questionType').combobox('getValue')
var questionTypes=encodeURI(id);
//獲取課程
var courseTypeId =$('#courseTypeId').combobox('getValue')
var courseType=encodeURI(courseTypeId);
//提交表單
document.getElementById("questionTypesManage").action="${pageContext.request.contextPath}/leadtoQuestionTypes/leadInExcelQuestionBank?questionType="+questionTypes+"&courseType="+courseType;
document.getElementById("questionTypesManage").submit();
$.messager.alert('提示','操作成功!','info');
}else{
$.messager.alert('提示','請選擇xls格式文件!','info');
$('#uploadExcel').filebox('setValue','');
}
}
}else{
$.messager.alert('提示','請選擇課程題型!','info');
}
}
前臺代碼完畢以后,我們接下來看controller的代碼,這里需要注意的是,前臺easyui的filebox的name標簽的名字是作為參數傳到后臺的,后臺以流的形式接收到前臺傳過來的excle文件,我們使用Excle工具類將Excle轉換成list集合,最后將list集合保存到數據庫中。我們看下后臺的代碼實現:
/**
* 導入題庫Excel
*
* @param uploadExcel 上傳的excel文件
*
* @param request 請求
*
* @param resposne 響應
*
* @throws UnsupportedEncodingException 編碼異常
*
*/
@RequestMapping("/leadInExcelQuestionBank")
public String leadInExcelQuestionBank(
@RequestParam("uploadExcel") CommonsMultipartFile uploadExcel,
HttpServletRequest request, HttpServletResponse response)
throws UnsupportedEncodingException {
// 獲取前臺傳來的題型和課程
String questionType = request.getParameter("questionType").trim();
String courseType = request.getParameter("courseType").trim();
String questionTypeNameId = new String(
questionType.getBytes("iso-8859-1"), "utf-8");
String courseTypeId = new String(courseType.getBytes("iso-8859-1"),
"utf-8");
InputStream in;
boolean flag = false;
try {
// 獲取前臺exce的輸入流
in = uploadExcel.getInputStream();
//獲取sheetName名字
String sheetName = leadToInQuestionTypesManageBean.getSheetName(questionTypeNameId);
// excel的表頭與文字對應,獲取excel表頭
LinkedHashMap map = leadToInQuestionTypesManageBean.getMapLeadInExcelQuestionBank(questionTypeNameId);
//獲取組合excle表頭數組,防止重復用的
String[] uniqueFields =leadToInQuestionTypesManageBean.getUniqueFields(questionTypeNameId);
//獲取需要導入的具體的表
Class class1=leadToInQuestionTypesManageBean.getClassName(questionTypeNameId);
//excel轉化成的list集合
List list = null;
try {
//調用excle共用類,轉化成list
list=ExcelUtil.excelToList(in, sheetName, class1, map, uniqueFields);
} catch (ExcelException e) {
e.printStackTrace();
}
//保存實體集合
flag= leadToInQuestionTypesManageBean.leadInExcelQuestionBank(questionTypeNameId, courseTypeId, list);
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.println("執行結果:" + flag);
return "/LeadToQuestionTypeBank";
}
到這里關于Excle導入就已經完成了,關于Excle的導出,和ExcelUtil類的編寫,我們下篇文章繼續,敬請期待。
標簽:
總結
以上是生活随笔為你收集整理的java maven导入导出_Java +EasyUI+SpringMvc实现Excle导入导出(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt下实现文件的拖拽打开
- 下一篇: qt鼠标进入窗体后,窗体自动置顶