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