将Excel数据读取到ListMap

  /**
* 将Excel数据读取到ListMap
* @param file
*/
public static List<Map<String, Object>> readExcelDataToListMap(MultipartFile file) {
String edition_2003 = "^.+\\.(?i)(xls)$"; // Excel_2003版本
String edition_2007 = "^.+\\.(?i)(xlsx)$"; // Excel_2007版本
String fileName = file.getOriginalFilename(); // 获取文件名
if (StringUtils.isNotBlank(fileName)) {
try {
// 根据Excel版本创建对象
Workbook wb = null;
if (fileName.matches(edition_2003)) {
wb = new HSSFWorkbook(file.getInputStream());
} else {
if (fileName.matches(edition_2007)) {
wb = new XSSFWorkbook(file.getInputStream());
}
}
// 读取Excel里面的数据
if (null != wb) {
// 得到第一个shell
Sheet sheet = wb.getSheetAt(0);
// 得到Excel的行数
int totalRows = sheet.getPhysicalNumberOfRows();
// 得到Excel的列数(前提是有行数)
int totalCells = 0;
if (totalRows > 1 && sheet.getRow(0) != null) {
totalCells = sheet.getRow(0).getPhysicalNumberOfCells();
}
List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
// 循环Excel行数
for (int r = 1; r < totalRows; r++) {
Row row = sheet.getRow(r);
if (row == null) {
continue;
}
// 循环Excel的列
Map<String, Object> map = new HashMap<String, Object>();
for (int c = 0; c < totalCells; c++) {
Cell cell = row.getCell(c);
if (null != cell) {
int cellType = cell.getCellType();
if (cellType == 0) {
DataFormatter dataFormatter = new DataFormatter();
dataFormatter.addFormat("###########", null);
String str = dataFormatter.formatCellValue(cell);
if (StringUtils.isNotBlank(str)) {
map.put(c+"",str);
}
}else{
String str = String.valueOf(cell);
if (StringUtils.isNotBlank(str)) {
map.put(c+"",str);
}
}
}
}
// 添加到list
if (map.size() > 0) {
listMap.add(map);
}
}
return listMap;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}

最新文章

  1. 锁定TABLE的首行和首列
  2. 深入了解Hibernate的缓存使用
  3. Python机器学习库scikit-learn实践
  4. CSS: word-wrap和word-break
  5. bitmap缩放时抗锯齿
  6. [大牛翻译系列]Hadoop系列性能部分完结
  7. MSSQL随机数概率测试
  8. Linux中通过命令直接删除文件中最后一行
  9. Unity UGUI图文混排源码(四) -- 聊天气泡
  10. (十七)TableView的本地性能优化
  11. labview下载地址
  12. python---- pyqt 十字光标
  13. Python 爬虫之下载图片
  14. LOJ2014 SCOI2016 萌萌哒 并查集、ST表优化连边
  15. Protobuf一例
  16. AndroidStudio2.2.2 打开ddms快捷键
  17. net.sf.json.JSONException: &amp;#39;object&amp;#39; is an array. Use JSONArray instead
  18. Python给我的小伙伴来个微信机器人
  19. python网络编程之TCP通信实例
  20. Bitmap具体解释与Bitmap的内存优化

热门文章

  1. ELKF搭建
  2. swing01
  3. .Net Core WebApi AutoFac用法
  4. vue IE9兼容flex布局 css3(转载)
  5. 关于sql时间方面的处理
  6. java &amp; spring 注解 备忘
  7. chrome网页截图
  8. docker实战(8)使用docker-compose快速搭建zookeeper集群
  9. 怎么在Windows系统中制作Mac系统U盘启动盘?
  10. sql server 检测是否更新并输出更新的数据