Java-SSM,文件導入,后台MultipartFile,獲取前台導入文件並進行如何讀取


    導入的方式有很多種,下面介紹的方式是在SSM項目中導入Excel文件的具體操作,后台是如何進行文件解析獲取的。

    首先要了解,我們后台在進行前台的這個文件導入的流程應該是怎么樣的?

    當前端通過POST提交方式進行上傳文件,到服務器中,我們后台首先是要能夠獲取到服務器里面的文件,在Spirng中,可通過MultipartFile接口對象來獲取當前上傳的文件,

    然后獲取到當前文件,進行解析,通過Java輸入流的方式獲取Excel文件對象,通過MultipartFile對象獲取,並存入inputStream中,然后在通過MultipartFile對象獲取文件名稱,

    判斷文件擴展名為“.xls還是xlsx的Excel文件”,因為不同擴展名的Excel所用到的解析方法不同,Java里面有一個自帶內置解析EXCEL文件的類Workbook,如果沒有,需要去導入相對應的

    包,對Excel文件進行解析判斷,然后再將已存入的inputStream中的Excel解析, workbook= new HSSFWorkbook(inputStream),HSSFWorkbook專門解析.xls文件,然后存入Workbook對象中

    再通過workbook里面相對應的方法獲取Excel數據行。

   

具體代碼思路:

public Object updateMemberListByExcel(@RequestParam("memberExcel") MultipartFile memberExcel) throws IOException {


ObjectMapper objectMapper =new ObjectMapper();

InputStream inputStream = null;

Map<String, Object> data = new HashMap();

Map<String, Object> map = new HashMap<String, Object>();
String msg=null;
try {


inputStream =memberExcel.getInputStream();//獲取前端傳遞過來的文件對象,存儲在“inputStream”中
String fileName = memberExcel.getOriginalFilename();//獲取文件名

Workbook workbook =null; //用於存儲解析后的Excel文件

//判斷文件擴展名為“.xls還是xlsx的Excel文件”,因為不同擴展名的Excel所用到的解析方法不同
String fileType = fileName.substring(fileName.lastIndexOf("."));
if(".xls".equals(fileType)){
workbook= new HSSFWorkbook(inputStream);//HSSFWorkbook專門解析.xls文件
}else if(".xlsx".equals(fileType)){
workbook = new XSSFWorkbook(inputStream);//XSSFWorkbook專門解析.xlsx文件
}

ArrayList<Pxbm>list =new ArrayList<>();
ArrayList<Pxbm>fountList =new ArrayList<>();
ArrayList<Pxbm>spkList =new ArrayList<>();

 

Sheet sheet; //工作表
Row row; //行
Cell cell; //單元格

Pxbm pxbm1=null;
int count = 0;
int cgcs=0;
int sxl=1;

//循環遍歷,獲取數據
for(int i=0;i<workbook.getNumberOfSheets();i++){

sheet=workbook.getSheetAt(i);//獲取sheet
for(int j=sheet.getFirstRowNum();j<=sheet.getLastRowNum();j++) {//從有數據的第行開始遍歷
row = sheet.getRow(j);
if (row != null && row.getFirstCellNum() != j) { //row.getFirstCellNum()!=j的作用是去除首行,即標題行,如果無標題行可將該條件去掉
Pxbm pxbm=new Pxbm();
ArrayList tempList =new ArrayList();

pxbm.setAreaName(row.getCell(0).toString());
pxbm.setXm(row.getCell(1).toString());
pxbm.setSfzhm(row.getCell(2).toString());
pxbm.setDwm(row.getCell(3).toString());
pxbm.setKmm(row.getCell(4).toString());

//上面激素獲取到Excel的每一行數據,每一列可根據需求進行操作,這里是已經對整個Excel進行了數據獲取,可根據具體業務需求,數據來取值

return map;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM