真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringMvc+POI如何處理excel表數(shù)據(jù)導入

這篇文章主要介紹了SpringMvc+POI如何處理excel表數(shù)據(jù)導入,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

公司專注于為企業(yè)提供成都網(wǎng)站設計、成都網(wǎng)站建設、微信公眾號開發(fā)、商城開發(fā),微信小程序定制開發(fā),軟件按需搭建網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。

一.概念介紹

ApachePOI是Apache軟件基金會的開放源碼函式庫,POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能

二.功能相關代碼

1.環(huán)境說明:JDK1.7+tomcat7+spring

2.配置文件的配置

pom文件中添加POI所需依賴


  
   org.apache.poi
   poi
   3.13
  
  
   org.apache.poi
   poi-ooxml
   3.13
  

spring-mvc.xml配置文件上傳

 
  
  
  
  
  
  
 

3.相關工具類及代碼編寫

Excel解析工具類(ImportExcelUtil.java)

package com.jointem.hrm.utils;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by jenking on 2017/9/8.
 */
public class ImportExcelUtil {

 private final static String excel2003L =".xls"; //2003- 版本的excel
 private final static String excel2007U =".xlsx"; //2007+ 版本的excel

 /**
  * 描述:獲取IO流中的數(shù)據(jù),組裝成List>對象
  * @param in,fileName
  * @return
  * @throws IOException
  */
 public List> getBankListByExcel(InputStream in,String fileName) throws Exception{
  List> list = null;

  //創(chuàng)建Excel工作薄
  Workbook work = this.getWorkbook(in,fileName);
  if(null == work){
   throw new Exception("創(chuàng)建Excel工作薄為空!");
  }
  Sheet sheet = null;
  Row row = null;
  Cell cell = null;

  list = new ArrayList>();
  //遍歷Excel中所有的sheet
  for (int i = 0; i < work.getNumberOfSheets(); i++) {
   sheet = work.getSheetAt(i);
   if(sheet==null){continue;}


   //遍歷當前sheet中的所有行
   System.out.println(sheet.getLastRowNum());
   for (int j = sheet.getFirstRowNum(); j <=sheet.getLastRowNum()-11; j++)
   {
    row = sheet.getRow(j);
//    if(row==null||row.getFirstCellNum()==j)
//    {
//     continue;
//    }
    //遍歷所有的列

    List li = new ArrayList();
    for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++)
    {
     cell = row.getCell(y);
     if(this.isMergedRegion(sheet,j,y))
     {
      li.add(this.getMergedRegionValue(sheet,j,y));
     }
     else
     {
      li.add(this.getCellValue(cell));
     }

    }
    list.add(li);
   }
  }
  work.close();
  return list;
 }

 /**
  * 描述:根據(jù)文件后綴,自適應上傳文件的版本
  * @param inStr,fileName
  * @return
  * @throws Exception
  */
 public Workbook getWorkbook(InputStream inStr,String fileName) throws Exception{
  Workbook wb = null;
  String fileType = fileName.substring(fileName.lastIndexOf("."));
  if(excel2003L.equals(fileType)){
   wb = new HSSFWorkbook(inStr); //2003-
  }else if(excel2007U.equals(fileType)){
   wb = new XSSFWorkbook(inStr); //2007+
  }else{
   throw new Exception("解析的文件格式有誤!");
  }
  return wb;
 }

 /**
  * 描述:對表格中數(shù)值進行格式化
  * @param cell
  * @return
  */
 public Object getCellValue(Cell cell){
  Object value = null;
  DecimalFormat df = new DecimalFormat("0"); //格式化number String字符
  SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); //日期格式化
  DecimalFormat df2 = new DecimalFormat("0"); //格式化數(shù)字

  switch (cell.getCellType()) {
   case Cell.CELL_TYPE_STRING:
    value = cell.getRichStringCellValue().getString();
    break;
   case Cell.CELL_TYPE_NUMERIC:
    if("General".equals(cell.getCellStyle().getDataFormatString())){
     value = df.format(cell.getNumericCellValue());
    }else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())){
     value = sdf.format(cell.getDateCellValue());
    }else{
     value = df2.format(cell.getNumericCellValue());
    }
    break;
   case Cell.CELL_TYPE_BOOLEAN:
    value = cell.getBooleanCellValue();
    break;
   case Cell.CELL_TYPE_BLANK:
    value = "";
    break;
   default:
    break;
  }
  return value;
 }


 /**
  * 獲取合并單元格的內(nèi)容
  * @param sheet
  * @param row
  * @param column
  * @return
  */
 public Object getMergedRegionValue(Sheet sheet, int row, int column)
 {
  int sheetMergeCount = sheet.getNumMergedRegions();
  for (int i = 0; i < sheetMergeCount; i++)
  {
   CellRangeAddress ca = sheet.getMergedRegion(i);
   int firstColumn = ca.getFirstColumn();
   int lastColumn = ca.getLastColumn();
   int firstRow = ca.getFirstRow();
   int lastRow = ca.getLastRow();
   if (row >= firstRow && row <= lastRow)
   {
    if (column >= firstColumn && column <= lastColumn)
    {
     Row fRow = sheet.getRow(firstRow);
     Cell fCell = fRow.getCell(firstColumn);
     return this.getCellValue(fCell);
    }
   }
  }
  return null;
 }

 /**
  * 判斷是否是合并單元格
  * @param sheet
  * @param row
  * @param column
  * @return
  */
 public boolean isMergedRegion(Sheet sheet,int row ,int column) {
  int sheetMergeCount = sheet.getNumMergedRegions();
  for (int i = 0; i < sheetMergeCount; i++) {
   CellRangeAddress range = sheet.getMergedRegion(i);
   int firstColumn = range.getFirstColumn();
   int lastColumn = range.getLastColumn();
   int firstRow = range.getFirstRow();
   int lastRow = range.getLastRow();
   if(row >= firstRow && row <= lastRow){
    if(column >= firstColumn && column <= lastColumn){
     return true;
    }
   }
  }
  return false;
 }
}

請求控制器(處理頁面excel導入請求)

package com.poiexcel.control; 

import java.io.InputStream; 
import java.io.PrintWriter; 
import java.util.List; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.multipart.MultipartFile; 
import org.springframework.web.multipart.MultipartHttpServletRequest; 

import com.poiexcel.util.ImportExcelUtil; 
import com.poiexcel.vo.InfoVo; 

@Controller 
@RequestMapping("/uploadExcel/*") 
public class UploadExcelControl { 

 /** 
  * 描述:通過傳統(tǒng)方式form表單提交方式導入excel文件 
  * @param request 
  * @throws Exception 
  */ 
 @RequestMapping(value="upload.do",method={RequestMethod.GET,RequestMethod.POST}) 
 public String uploadExcel(HttpServletRequest request) throws Exception { 
  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;  
  InputStream in =null; 
  List> listob = null; 
  MultipartFile file = multipartRequest.getFile("upfile"); 
  if(file.isEmpty()){ 
   throw new Exception("文件不存在!"); 
  } 
  in = file.getInputStream(); 
  listob = new ImportExcelUtil().getBankListByExcel(in,file.getOriginalFilename()); 
  in.close(); 

  //該處可調用service相應方法進行數(shù)據(jù)保存到數(shù)據(jù)庫中,現(xiàn)只對數(shù)據(jù)輸出 
  for (int i = 0; i < listob.size(); i++) { 
   List lo = listob.get(i); 
   InfoVo vo = new InfoVo(); 
   vo.setCode(String.valueOf(lo.get(0))); 
   vo.setName(String.valueOf(lo.get(1))); 
   vo.setDate(String.valueOf(lo.get(2))); 
   vo.setMoney(String.valueOf(lo.get(3))); 

   System.out.println("打印信息-->機構:"+vo.getCode()+" 名稱:"+vo.getName()+" 時間:"+vo.getDate()+" 資產(chǎn):"+vo.getMoney()); 
  } 
  return "result"; 
 }

前端代碼

前端運用了bootstrap的文件上傳組件fileinput,需要引入fileinput.css,fileinput.js,zh.js,bootstrap.css,bootstrap.js,jquery.min.js


考勤信息錄入
 

Vo對象,保存Excel數(shù)據(jù)對應的對象

package com.poiexcel.vo; 


//將Excel每一行數(shù)值轉換為對象 
public class InfoVo { 

 private String code; 
 private String name; 
 private String date; 
 private String money; 

 public String getCode() { 
  return code; 
 } 
 public void setCode(String code) { 
  this.code = code; 
 } 
 public String getName() { 
  return name; 
 } 
 public void setName(String name) { 
  this.name = name; 
 } 
 public String getDate() { 
  return date; 
 } 
 public void setDate(String date) { 
  this.date = date; 
 } 
 public String getMoney() { 
  return money; 
 } 
 public void setMoney(String money) { 
  this.money = money; 
 } 
}

三.效果展示

1.頁面展示

SpringMvc+POI如何處理excel表數(shù)據(jù)導入

SpringMvc+POI如何處理excel表數(shù)據(jù)導入

2.后臺信息打印

SpringMvc+POI如何處理excel表數(shù)據(jù)導入

感謝你能夠認真閱讀完這篇文章,希望小編分享的“SpringMvc+POI如何處理excel表數(shù)據(jù)導入”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!


本文名稱:SpringMvc+POI如何處理excel表數(shù)據(jù)導入
網(wǎng)頁地址:http://weahome.cn/article/jgdjhj.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部