控制器例子:java
一. 解析excel內容插入到數據庫數據庫
Vm:json
<form id=’form_file’ method=’post’ enctype=’multipart/form-data’>函數
<input id="uploadFile" type="file" name='uploadFile' />post
<a href=’javascirpt(void0)’ onclick=’resolv();’>解析</a>url
</form>spa
注意:解析按鈕必須是<a>標籤,若是換成button,用公司的表單提交則會出錯:提示不是MultipartFile請求.excel
Js:$(‘#form_file’).bupform(orm
url:’xx.do’,ip
dataType:’json’,
onSubmit:function(){return true;},//return false則會阻止表單提交
success:function(data){
//成功後的回調函數
}
);
Controller:
處理請求的方法參數用(MultipartFile uploadFile)類型接收
解析excel內容步驟:
a) ImputStream is = uploadFile.getInputStraam();
fs = new POIFSFileSystem(is);
a) wb = new HSSFWorkbook(fs);
1. sheet = wb.getSheetAt(0);//拿到excel的第一個sheet
2. 獲得總行數:int rowNum = sheet.getLastRowNum();
3. 獲得excel的某一行
a) HSSFRow row = sheet.getRow(0);//獲得第0行 也就是excel的標題
a) HSSFCell cell = row.getCell(0);
b) 經過HSSFCell 單元格類型拿到單元格的數據
If(HSSFDateUtil.isCellDateFormatted(cell)){
Date date = cell.getDateCellValue();
}
DecimalFormat df = new DecimalFormat("0");
cellvalue = df.format(cell.getNumericCellValue());
7. 每一行的數據,能夠本身定義一個類來保存,類中的字段於行裏面的每一列對應
也能夠用一個Map<Integer,String>-à <行號,行裏面的內容>
二. 下載項目中的資源
<a href='/res/excel/廣東省補貼金額表.xls'>下載excel文檔模板:</a>
Vm:<a href=’download.do?filename=廣東省補貼金額表.xls’ ></a>
Controller:
處理請求的方法:
public void download(HttpServletResponse response,String filename){
a) 設置文件的MIME類型
response.setContentType(getServletContext().getMimeType(filename));
b) 拿到絕對路徑
String fullFileName = 「/res/excel/」+filename;
c) response.setHeader("Content-Disposition", "attachment; filename="+ new String(filename.getBytes("GBK"), "ISO8859-1"));
d) InputStream in = new FileInputStream(fullFileName);
e) BufferedInputStream bis = new BufferedInputStream(in);
f) BufferedOutputStreamout=new BufferedOutputStream(response.getOutputStream());
int b;
While(b=(bis.read()!=-1){
Out.write(b);
}
In.close();
Out.flush();
Out.close();