通過ajax上傳excel
html:
<li>
<span>
上 傳:
</span>
<span class="input">
<input type="file" id="upfile" name="upfile" placeholder="" />
</span>
<button onclick="importExp();">
匯入
</button>
<span>
格式:.xls
</span>
</li>
js:
//匯入檔案
function importExp() {
var formData = new FormData();
var name = $("#upfile").val();
formData.append("file", $("#upfile")[0].files[0]);
formData.append("name", name);
$.ajax({
url: '#springUrl('')/summary/importExp',
type: 'POST',
async: false,
data: formData,
// 告訴jQuery不要去處理髮送的資料
processData: false,
// 告訴jQuery不要去設定Content-Type請求頭
contentType: false,
beforeSend: function() {
console.log("正在進行,請稍候");
},
success: function(responseStr) {
if (responseStr == "01") {
alert("匯入成功");
} else {
alert("匯入失敗");
}
}
});
}
controller:
@RequestMapping("/importExp")
@ResponseBody
public String importExp(@RequestParam("file") MultipartFile file, HttpServletRequest request){
// 判斷檔案是否為空
String flag = "02";//上傳標誌
if (!file.isEmpty()) {
try {
String originalFilename = file.getOriginalFilename();//原檔名字
InputStream is = file.getInputStream();//獲取輸入流
flag = summaryExpServiceImpl.writeExelData(is);
// 轉存檔案
//file.transferTo(new File(filePath));
} catch (Exception e) {
flag="03";//上傳出錯
e.printStackTrace();
}
}
return flag;
}
service:
/**
* 寫入
* @param is
*/
public String writeExelData(InputStream is){
List<List<String>> list = readExcelContent(is);
for (int i=0,j=list.size();i<j;i++){
List<String> row = list.get(i);
ExpInfoSummary expInfoSummary = new ExpInfoSummary();
expInfoSummary.setOrgName(row.get(0));
expInfoSummary.setSiteName(row.get(1));
expInfoSummary.setProductCode(row.get(2));
expInfoSummary.setProductName(row.get(3));
expInfoSummary.setProductNum(row.get(4));
expInfoSummary.setProductPrice(Double.valueOf(row.get(5)));
expInfoSummary.setProductState(row.get(6));
pool.getSqlSession("psEpfSqlSession").selectList("com.jd.ps.data.epf.mapper.expInfoSummary.insertExp", expInfoSummary);
}
return "01";
}
/**
* 讀取Excel資料內容
* @param is
* @return Map 包含單元格資料內容的Map物件
*/
public List<List<String>> readExcelContent(InputStream is) {
List<List<String>> content = new ArrayList<List<String>>();
POIFSFileSystem fs;
HSSFWorkbook wb;
HSSFSheet sheet;
HSSFRow row;
String str = "";
try {
fs = new POIFSFileSystem(is);
wb = new HSSFWorkbook(fs);
sheet = wb.getSheetAt(0);
// 得到總行數
int rowNum = sheet.getLastRowNum();
row = sheet.getRow(0);
int colNum = row.getPhysicalNumberOfCells();
// 正文內容應該從第二行開始,第一行為表頭的標題
for (int i = 1; i <= rowNum; i++) {
row = sheet.getRow(i);
int j = 0;
List<String> list = new ArrayList<String>();
while (j < colNum) {
// 每個單元格的資料內容用"-"分割開,以後需要時用String類的replace()方法還原資料
// 也可以將每個單元格的資料設定到一個javabean的屬性中,此時需要新建一個javabean
// str += getStringCellValue(row.getCell((short) j)).trim() +
// "-";
str = getCellFormatValue(row.getCell((short) j)).trim();
list.add(str);
j++;
}
content.add(list);
str = "";
}
} catch (IOException e) {
e.printStackTrace();
}
return content;
}
/**
* 根據HSSFCell型別設定資料
* @param cell
* @return
*/
private String getCellFormatValue(HSSFCell cell) {
String cellvalue = "";
if (cell != null) {
// 判斷當前Cell的Type
switch (cell.getCellType()) {
// 如果當前Cell的Type為NUMERIC
case HSSFCell.CELL_TYPE_NUMERIC:
case HSSFCell.CELL_TYPE_FORMULA: {
// 判斷當前的cell是否為Date
if (HSSFDateUtil.isCellDateFormatted(cell)) {
// 如果是Date型別則,轉化為Data格式
//方法1:這樣子的data格式是帶時分秒的:2011-10-12 0:00:00
//cellvalue = cell.getDateCellValue().toLocaleString();
//方法2:這樣子的data格式是不帶帶時分秒的:2011-10-12
Date date = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cellvalue = sdf.format(date);
}
// 如果是純數字
else {
// 取得當前Cell的數值
cellvalue = String.valueOf(cell.getNumericCellValue());
}
break;
}
// 如果當前Cell的Type為STRIN
case HSSFCell.CELL_TYPE_STRING:
// 取得當前的Cell字串
cellvalue = cell.getRichStringCellValue().getString();
break;
// 預設的Cell值
default:
cellvalue = " ";
}
} else {
cellvalue = "";
}
return cellvalue;
}
相關文章
- js通過ajax傳送header資訊php接收JSHeaderPHP
- Qt通過Http上傳檔案(路過)QTHTTP
- 通過圖片地址,將圖片處理成base64,使用ajax上傳圖片
- Ajax 之檔案上傳
- PHP如何通過CURL上傳檔案PHP
- ajax實現檔案上傳
- jftp通過sftp協議上傳檔案FTP協議
- Windows 機器通過 FTP 上傳檔案WindowsFTP
- 通過API介面實現圖片上傳API
- 在php中通過curl上傳檔案PHP
- php通過ftp協議上傳檔案PHPFTP協議
- Excel上傳示例及後臺解析ExcelExcel
- java通過JXL寫ExcelJavaExcel
- ajax上傳檔案的請求
- 通過git shell 在Github上傳本地專案Github
- 通過GridView匯出ExcelViewExcel
- 通過配置檔案(.htaccess)實現檔案上傳
- 如何通過Gradle上傳Android庫到JCenterGradleAndroid
- jQuery HTML5 AJAX 圖片上傳jQueryHTML
- 微信公眾號上如何上傳excel表格?Excel
- Excel上傳並讀取資料Excel
- vue+axio通過獲取dom元素上傳檔案Vue
- javascript和php使用ajax通訊傳遞JSONJavaScriptPHPJSON
- jQuery+ASP.NET的AJAX檔案上傳jQueryASP.NET
- [BUG反饋]上傳EXCEL想做匯入,發現上傳差不多成功被重置上傳Excel
- Ajax通過SOAP協議呼叫Web服務協議Web
- 【ajax】 html js jquery ajax上傳檔案【一眼就會】【實用】HTMLJSjQuery
- ajax上傳檔案,spring mvc獲取檔案並處理,通過頁面按鈕傳送url,由後臺控制檔案下載SpringMVC
- 知識點系列一---上傳圖片並通過canvas展示Canvas
- Android 傳送HTTP GET POST 請求以及通過 MultipartEntityBuilder 上傳檔案(二)AndroidHTTPUI
- 支援多檔案上傳,預覽,拖拽,基於bootstrap的上傳外掛fileinput的ajax非同步上傳boot非同步
- AJAX資料互動及檔案上傳功能
- Ajax+PHP實現非同步圖片上傳PHP非同步
- AjaxFileUpload檔案上傳元件(php+jQuery+ajax)元件PHPjQuery
- 通過JQuery ajax獲取伺服器時間jQuery伺服器
- JQuery Ajax通過Handler訪問外部XML資料jQueryXML
- SpringMVC 通過commons-fileupload實現檔案上傳SpringMVC
- 通過SQL Server對上傳檔案內容進行查詢SQLServer