JAVA批量上传下载Excel_如何实现批量上传----------Java解析excel

一、引子

在web平台开发中仅经常会遇到一下需要批量的问题,通常得做法是使用excel上传,下面主要介绍一下在实际开发中到的实例。

二、准备工作

1、需要导入的jar包(主要用到poi包)

(1)poi-3.14.jar

(2)poi-ooxml-3.14.jar

(3)poi-ooxml-schemas-3.14.jar

(4)xmlbeans-2.6.0.jar

2、主要的API

(1)import org.apache.poi.ss.usermodel.Workbook,对应Excel文档;

(2)import org.apache.poi.hssf.usermodel.HSSFWorkbook,对应xls格式的Excel文档;

(3)import org.apache.poi.xssf.usermodel.XSSFWorkbook,对应xlsx格式的Excel文档;

(4)import org.apache.poi.ss.usermodel.Sheet,对应Excel文档中的一个sheet;

(5)import org.apache.poi.ss.usermodel.Row,对应一个sheet中的一行;

(6)import org.apache.poi.ss.usermodel.Cell,对应一个单元格。

三、上代码

excel格式:

9f555cb6cea102b44d8a3d0e3c77e544.png

代码:

1 packagetext;2

3 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.InputStream;6 importjava.util.ArrayList;7 importjava.util.HashMap;8 importjava.util.LinkedHashMap;9 importjava.util.List;10 importjava.util.Map;11

12 importorg.apache.poi.hssf.usermodel.HSSFWorkbook;13 importorg.apache.poi.ss.usermodel.Cell;14 importorg.apache.poi.ss.usermodel.Row;15 importorg.apache.poi.ss.usermodel.Sheet;16 importorg.apache.poi.ss.usermodel.Workbook;17 importorg.apache.poi.xssf.usermodel.XSSFWorkbook;18

19 public classExcelSolution {20 public static voidmain(String[] args) {21 String filePath = "E:\\XXXXupload\\地点.xlsx";22 List> resultList =ExcelUtil(filePath);23 for(Map map : resultList) {24 System.out.println(map);25 }26 }27 public static List>ExcelUtil(String filePath){28 ArrayList> reList = new ArrayList>();29 File file = newFile(filePath);30 Workbook wb=null;31 if(file.exists() &&file.isFile()){32 try{33 if(filePath.toLowerCase().endsWith(".xls")){34 wb = new HSSFWorkbook(newFileInputStream(file));35 }else if (filePath.toLowerCase().endsWith(".xlsx")) {36 wb = new XSSFWorkbook(newFileInputStream(file));37 }38 Sheet sheet =wb.getSheetAt(0);39 int rowNum = sheet.getPhysicalNumberOfRows(); //获取行数

40 if (rowNum >1) {41 for (int i = 1; i < rowNum; i++) {42 Map map = new HashMap();43 Row row =sheet.getRow(i);44 if (row!=null) {45 //第一列:省份

46 Cell cell0 = sheet.getRow(i).getCell(0);47 if(cell0 != null && !"".equals(cell0)){48 String Name =(String) cell0.getStringCellValue().trim();49 map.put("name", Name);50 }51 Cell cell1 = sheet.getRow(i).getCell(1);52 if(cell1 != null && !"".equals(cell1)){53 String provinceName =(String)cell1.getStringCellValue().trim();54 map.put("provinceName", provinceName);55 }56 Cell cell2 = sheet.getRow(i).getCell(2);57 if(cell0 != null && !"".equals(cell2)){58 String cityName =(String)cell2.getStringCellValue().trim();59 map.put("cityname", cityName);60 }61

62 reList.add(map);63 }64

65 }66

67 }68 } catch(Exception e) {69 System.out.println("************ 解析EXCEL失败 ************");70 e.printStackTrace();71 return null;72 }73 }74 returnreList;75 }76 }

输出:

c3b0fde5691a2fdaca2ff5c922e3531d.png

五、遇到问题及解决

1、报错:

4e0830f5ce7876e5623c0548a26884b1.png

原因: 当导包不一致时会出现问题。

59d896132bce915882324b13b12bea01.png

2.代码错误

1 int rowNum = sheet.getPhysicalNumberOfRows(); //获取行数

2 if (rowNum >1) {3 Map map = new HashMap();//出现在错误的行,一个new,存储地址是一样的

4 for (int i = 1; i < rowNum; i++) {5 Row row =sheet.getRow(i);6 if (row!=null) {7 //第一列:省份

8 Cell cell0 = sheet.getRow(i).getCell(0);9 if(cell0 != null && !"".equals(cell0)){10 String Name =(String) cell0.getStringCellValue().trim();11 map.put("name", Name);12 }13

14 reList.add(map);15 }16

17 }18

19 }

错误结果:

12e566276a1578d7f25b4dfba2658827.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值