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