一、引子

在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格式:

代码:

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 }

输出:

五、遇到问题及解决

1、报错:

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

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 }

错误结果:

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

  1. java图片上传下载_java实现文件的上传和下载

    1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...

  2. java断点上传下载_java实现多线程断点续传,上传下载 分享

    程序采用的ftp工具, apache 的 commons-net-ftp-ftpclient package com.ftp; import java.io.File; import java.io. ...

  3. springboot上传下载文件(4)--上传下载工具类(已封装)

    因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...

  4. java web pdf迅雷下载文件_javaWeb实现文件上传及下载.pdf

    jjaavvaaWWeebb实实现现文文件件上上传传与与下下载载 文件上传概述 实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项 在servlet 中读取上传文件的数 ...

  5. php dw文件上传下载,使用PHP实现文件上传

    这里使用PHP实现文件的上传,由在浏览器这边选择文件,上传到服务器.其中,在上传文件中,考虑到对上传文件大小的限制.类型限制等问题.(当然可以根据我们需要修改对上传的文件的限制,而一般而言php自身也 ...

  6. java struts2 excel上传_文件上传下载——通过struts的FormFile上传单个excel文件

    通过struts的FormFile上传单个excel文件 思路: 1.通过struts的FormFile获取File(这个文件的路径是"客户端的选择的路径地址") 2.将客户端的文 ...

  7. JSP 文件上传下载系列之一[基本方式上传文件]

    前言 在jsp的web项目中,很有可能会使用文件上传的功能. 把一个本地的文件上传到web 服务器的某个路径下. 对于java 来说, 实现这样功能的开源组件有很多, 比如较常用的commons-fi ...

  8. linux 上传下载工具有哪些,Linux上传下载工具

    远程连接Linux(如:Xshell.SecrueCRT),把需要上传文件和下载文件到Linux.使用下面几种方法都可以实现: 一.首先确定Linux服务器安装了lrzsz,如果没安装进行安装:yum ...

  9. 服务器如何下载百度网盘文件?Linux服务器如何在百度网盘中连接、上传下载;在Linux服务器上下载百度云盘中的资料

    前言 百度云提供Python包bypy进行远程服务器的对接然后下载: https://github.com/houtianze/bypy 可以通过pip直接下载,授权本人的百度云账号后,就可以直接使L ...

最新文章

  1. C++迪杰斯特拉算法求最短路径
  2. 3.2.1 造成误差的原因分析
  3. (转)Android SharedPreferences的使用
  4. 2 shell 锂基脂_壬二酸和癸二酸制备的复合锂基脂到底有那些差别!
  5. android 一个字符串分两行显示_重新梳理Android权限管理
  6. axure实现复选框全选_AxureRP8实战手册-案例73(全选与取消全选效果)
  7. fatal error C1010: unexpected end of file while looking for precompiled head
  8. 结合MSDN理解windows service 服务安装的三个类。
  9. about semget
  10. ehcache springboot_Spring Boot 入门示例合集(附源代码)
  11. 使用Python+md5删除本地重复(同一张不重名)的照片
  12. 编辑框CEdit自动换行简单设置
  13. apache maven安装教程
  14. 中国Linux杰出人物
  15. java内置监视管理控制台
  16. spring boot拦截器 过滤器
  17. 人工智能几行代码实现换脸
  18. 解决C3P0又出現一個問題,如下的Exception:
  19. c语言特征码搜索,[学习笔记]通过各语言特征码寻找按钮事件
  20. 计算机没法安装打印程序,无法安装打印机怎么办 无法安装打印机解决方法【图文教程】...

热门文章

  1. 科研文献|季节变化是流域尺度上土壤抗性变化的主要驱动因素
  2. 在线作图|在线做协惯量分析(CoIA)
  3. Pandas批量删除dataframe列名中的后缀实战:使用rstrip函数批量删除列名中的后缀(suffix)、使用replace函数批量删除列名中的后缀(suffix)
  4. R语言使用ggplot2同时可视化dataframe的多个数据列实战:多个数据列可视化在同一个图中、多个数据列可视化在多个图中(纵向多个子图)
  5. ImportError: cannot import name ‘DtypeArg‘ from ‘pandas
  6. KeyError: “None of [Int64Index([...],\n dtype=‘int64‘, length=739)] are in the [columns]“
  7. R语言dplyr包all_equal函数检查多个dataframe是否相同实战
  8. plotly可视化绘制多图(multiplot)
  9. Python进行时间序列平稳检验ADFtest(Augmented Dickey-Fuller Unit Root Test)
  10. 句法分析常用算法框架以及NLPIR、Dependency Viwer