通過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;
}
相關文章
- Ajax 之檔案上傳
- ajax實現檔案上傳
- 通過API介面實現圖片上傳API
- jftp通過sftp協議上傳檔案FTP協議
- Windows 機器通過 FTP 上傳檔案WindowsFTP
- 通過git shell 在Github上傳本地專案Github
- 通過配置檔案(.htaccess)實現檔案上傳
- SpringMVC 通過commons-fileupload實現檔案上傳SpringMVC
- ajax上傳檔案,spring mvc獲取檔案並處理,通過頁面按鈕傳送url,由後臺控制檔案下載SpringMVC
- Excel上傳並讀取資料Excel
- 【ajax】 html js jquery ajax上傳檔案【一眼就會】【實用】HTMLJSjQuery
- vue+axio通過獲取dom元素上傳檔案Vue
- 通過JQuery ajax獲取伺服器時間jQuery伺服器
- 微信公眾號上如何上傳excel表格?Excel
- Android 傳送HTTP GET POST 請求以及通過 MultipartEntityBuilder 上傳檔案(二)AndroidHTTPUI
- [BUG反饋]上傳EXCEL想做匯入,發現上傳差不多成功被重置上傳Excel
- AJAX資料互動及檔案上傳功能
- 知識點系列一---上傳圖片並通過canvas展示Canvas
- ajax與json通過程式碼的簡單應用JSON
- SpringMVC實現ajax上傳圖片實時預覽SpringMVC
- 使用Vue+Spring Boot實現Excel上傳VueSpring BootExcel
- 通過http上下文判斷是否是Ajax請求HTTP
- ajax請求下載excel檔案Excel
- Vue通過Blob物件實現匯出Excel功能Vue物件Excel
- 如何將SAP CRM equipment通過中介軟體上傳到ERP系統UI
- 通過反射獲取上傳檔案方法引數中的檔名反射
- Azure DevOps (七) 通過SSH部署上傳到伺服器的應用dev伺服器
- liunx通過TCP傳送資訊TCP
- laravel-admin,Dcat-admin與maatwebsite/excel上傳LaravelWebExcel
- django通過form和ajax提交表單資料和圖片DjangoORM
- 線上excel轉換成pdf,看過來!Excel
- ajax 下載Excel 新增回撥函式Excel函式
- jquery ajax file upload NET MVC 無重新整理檔案上傳jQueryMVC
- git上傳過濾檔案Git
- 使用Java通過POI讀取EXCEL中的資料JavaExcel
- Azure DevOps (六) 通過FTP上傳流水線製品到Linux伺服器devFTPLinux伺服器
- Angular父子元件通過服務傳參Angular元件
- 如何通過UGC傳播網路口碑GC