導入解析excel小結

導入解析excel小結

 

  控制器例子: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內容步驟:

  1. 經過傳過來的uploadFile拿到流:

a)         ImputStream is = uploadFile.getInputStraam();

  1. 建立poiSysteam:

    fs = new POIFSFileSystem(is);

  1. 建立workbook

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的標題     

  1. 獲得一行裏的某個單元格:

a)         HSSFCell cell = row.getCell(0);

b)         經過HSSFCell  單元格類型拿到單元格的數據

  1. 獲取單元格的type: type = cell.getCellType();
  2. HSSFCell.CELL_TYPE_FORMUL數字類型:cell.getNumericCellValue();
  3. HSSFCell.CELL_TYPE_STRING:類型cell.getRichStringCellValue();
  4. HSSFCell.CELL_TYPE_FORMULA:類型

If(HSSFDateUtil.isCellDateFormatted(cell)){

         Date date = cell.getDateCellValue();

}

  1. 身份證號避免科學計數法:

    DecimalFormat df = new DecimalFormat("0");

    cellvalue = df.format(cell.getNumericCellValue());

  1.     若是cell==null 的話,就給一個’’空字符串給他

7. 每一行的數據,能夠本身定義一個類來保存,類中的字段於行裏面的每一列對應

         也能夠用一個Map<Integer,String>-à <行號,行裏面的內容>

 

二.   下載項目中的資源

  1. 方式一:

<a href='/res/excel/廣東省補貼金額表.xls'>下載excel文檔模板:</a>

  1. 方式二:

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();

相關文章
相關標籤/搜索