ssh excel 导入 mysql_ssh poi解析excel并将数据存入数据库
做完了一個報表導入數據庫?功能?遇到幾個問題:一?、Poi解析excel?的兩種格式?xls?xlsx.?二、form表單上傳使用ajax
三、excel?單元格中有公式存在普通的讀取方式讀到的是公式不是數據
1.[代碼]先從上傳文件開始,最開始是套用項目中一直在用的validform
$(function() {
//ajax初始化 Validform 表單按鈕
$("#formobj").Validform({
tiptype : 4,
btnSubmit : "#btn_sub",
btnReset : "#btn_reset",
ajaxPost : false,//ajaxpost 是true的時候死活不能提交到后臺去
//為了實現功能只能,只能將就一下 但是問題也很嚴重,這里返回的值是
// 當前form的對象,所以不管我后臺是什么情況前臺都會提示 上傳成功
callback: function (data){
var win = frameElement.api.opener;
if (data) {
win.tip("上傳成功!");
frameElement.api.hide();
//win.reloadTable(data);
}
win.parentLoad();
}
});
});
具體的validform可以百度下看看它的說明文檔
2.[代碼]ajax上傳
//上面說到 validform ajaxPost為false時form表單才能提交相對的 返回的數據是form的對象,實際上不能滿足我//的要求。所以功能實現之后 改!
//想到 html5 是有 FormData 的 于是
文件名稱:
選擇文件:
function ajsave(){
var formData = new FormData($( "#ajform" )[0]);
$.ajax({
url: path+"reportForUrlController/saveOrUpdata" ,
type: 'POST',
data:formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (data) {
var win = frameElement.api.opener;
if(data.success==true){
win.tip(data.msg);
frameElement.api.close();
win.parentLoad();
}else{
$.messager.alert('提示',data.msg);
}
}
});
}
//到了這里想著后臺處理基本什么情況前臺都能告訴用戶上傳的狀態并且能正常上傳了。
//實際上確實能滿足業務需求了
//測試發現問題了!IE10以下還是不能提交表單 FormData 不支持IE10以下的版本!
3.[代碼]ajaxFileUpload
//這很煩啊,本人一般都用火狐 谷歌之類的很少用到ie但是用戶不一定就不用ie啊
//于是 繼續改!
//引入 js
function ajsave(){
$("#ajform").ajaxSubmit({
dataType: 'json',
contentType: "application/json; charset=utf-8",
success : function (data, status){
var win = frameElement.api.opener;
if(data.success){
win.tip(data.msg);
frameElement.api.close();
win.parentLoad();
}else{
$.messager.alert('提示',data.msg);
}
}
});
}
//測試之后發現都可以了
//于是皆大歡喜 前臺搞定之后 該搞后臺了
//這種形式傳輸的file 是 multipart/form-data 記得在 form 中添加屬性
4.[代碼]poi解析(包括解析單元格公式)
//在代碼之前我一直在考慮怎么得到路徑然后 通過路徑去解析(本人對與上傳功能并不熟悉)
//后來才發現我傳到后臺的file 它本身就是一個流... 于是皆大歡喜......
@RequestMapping(value = "/addorupdate" ,method = RequestMethod.POST)
@ResponseBody
public AjaxJson addorupdate(HttpServletRequest req,
@RequestParam(value = "file", required = false) MultipartFile file,
@RequestParam(value = "fileName", required = true) String FileName )
throws Exception {
AjaxJson j = new AjaxJson();
InputStream is = file.getInputStream();
String isName = file.getOriginalFilename();
//直接將excel 按后綴不同轉成workbook格式的數據
String type = isName.substring(isName.lastIndexOf(".")+1);
Workbook book =null;
if(type.equals("xls")){
book = new HSSFWorkbook(is);
}else if(type.equals("xlsx")){
book = new XSSFWorkbook(is);
}
Sheet sheet = book.getSheetAt(0);
Row row = null;
for (int i = 1; sheet.getRow(i)!=null; i++) {
row = sheet.getRow(i);
for (int j = 0;row.getCell(j)!=null; j++) {
........
}
}
}
//之后的解析就不詳細介紹了
//最后在excel的單元格是公式的情況下 使用 //String.valueOf(row.getCell(j).getNumericCellValue());
//就能獲取到值了,
以上 form提交excel poi解析并存庫完成
總結
以上是生活随笔為你收集整理的ssh excel 导入 mysql_ssh poi解析excel并将数据存入数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql子查询sysdate_Orac
- 下一篇: mysql忘了root密码_mysql忘