用poi从excel文档导入数据
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile; import java.io.IOException;
import java.math.BigDecimal;
import java.util.*; public class ImportExcelTool {
public static List<Map<String, String>> readExcel(MultipartFile file) throws IOException {
Workbook workbook = null;
String fileName = file.getOriginalFilename();
if (Objects.requireNonNull(fileName).endsWith(".xlsx"))
workbook = new XSSFWorkbook(file.getInputStream());
if (fileName.endsWith(".xls"))
workbook = new HSSFWorkbook(file.getInputStream());
Sheet sheet = Objects.requireNonNull(workbook).getSheetAt(0);
int physicalNumberOfRows = sheet.getPhysicalNumberOfRows(); Row row = sheet.getRow(1);
List<String> fieldNames = new ArrayList<>();
for (int i = 0; i < row.getLastCellNum(); i++)
fieldNames.add(row.getCell(i).getRichStringCellValue().getString()); List<Map<String, String>> lsMap = new ArrayList<>(); for (int j = 3; j < physicalNumberOfRows; j++) {
Map<String, String> dataMap = new HashMap<>();
Row dataRow = sheet.getRow(j);
if (dataRow == null)
break;
for (int i = 0; i < dataRow.getLastCellNum(); i++) {
String val = getCellValue(dataRow.getCell(i));
dataMap.put(fieldNames.get(i), val);
}
if (dataMap.size() == 0)
break; lsMap.add(dataMap);
}
return lsMap;
} private static String getCellValue(Cell cell) {
if (cell == null)
return "";
if (cell.getCellType() == CellType.NUMERIC)
if (DateUtil.isCellDateFormatted(cell))
return DateUtil.getJavaDate(cell.getNumericCellValue()).toString();
else
return new BigDecimal(cell.getNumericCellValue()).toString();
else if (cell.getCellType() == CellType.STRING)
return StringUtils.trimToEmpty(cell.getStringCellValue());
else if (cell.getCellType() == CellType.FORMULA)
return StringUtils.trimToEmpty(cell.getCellFormula());
else if (cell.getCellType() == CellType.BLANK)
return "";
else if (cell.getCellType() == CellType.BOOLEAN)
return String.valueOf(cell.getBooleanCellValue());
else if (cell.getCellType() == CellType.ERROR)
return "ERROR";
else
return cell.toString().trim(); }
}
用poi从excel文档导入数据的更多相关文章
- struts2中利用POI导出Excel文档并下载
1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: package com.tydic.eshop.action.feedback; impor ...
- Java之Poi导出Excel文档
一.Poi简介 在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持. 二.Workbook/HSSFWorkbook/XSSFWorkbook 1 ...
- POI 读取Excel文档中的数据——兼容Excel2003和Excel2007
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. HSSF - 提供读写Microsoft Exce ...
- POI导出Excel文档通用工具方法
import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; imp ...
- 使用struts2和poi导出excel文档
poi眼下应该是比較流行的操作excel的工具了.这几天做了个struts2和poi结合使用来实现导出excel的功能.个人认为还是比較有用的.代码阅读起来也非常easy.下来就来分享下我的心得 1 ...
- excel文档中数据导入sql server注意事项
进来经常需要对一些基础数据进行更新,而业务方提供的数据源往往都是excel,所以经常需要将excel中数据导入到 数据库临时表,然后再进行处理. 在导入过程中,发现有些数据比如手机号码,如果默认导入, ...
- POI之Excel文档增删改查
需要引用apache第三方lib库poi 支持xls.xlsx格式excel读写操作 package com.hua.excel; import java.io.File;import java.io ...
- 【Java】常用POI生成Excel文档设置打印样式
package poi_test; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi ...
- 怎么对比两个excel文档的数据差异
百度经验: https://jingyan.baidu.com/article/6181c3e0877c7a152ef15304.html
随机推荐
- 使用fastjson的parseObject方法将json字符串转换成Map 或者List
fastjson 转换成map HashMap<String,String> map = JSON.parseObject(jsonStr,new TypeReference<Has ...
- 如何优雅高效的写博客(Sublime + Markdown + Evernote)
如何优雅高效的写博客(Sublime + Markdown + Evernote) 本文主要是参照了几位大神的博客加上自己捣鼓了半天,比较适合新手流畅阅读 非常感谢下面两位大神: @dc_726: h ...
- SELinux 对nginx访问目录的影响
centos新装的系统,用yum 安装的nginx . 因用yum 安装的nginx 默认目录在/usr下面. 当SELinux开启时,将会禁止访问设置在其他路径下的地址.比如我设置server 中 ...
- 忘记mysql或mariadb数据库密码的解决方案
主机环境 主机系统:
- poj2987 Firing[最小割]
题目 求选最少点个数的最大权闭合子图.(板子题) 最小割入门题,什么都不想说,丢个别人题解地址就跑. 附加几点个人理解:与s相通的S点集是闭合子图,剩下的与t相通的T点集是其他的.任意一个割都保证了有 ...
- SQL Server自动备份
1.打开SQL Server Management Studio 数据库-管理-维护计划,右键,维护计划向导 2.在弹出页面右下方点击[更改],修改计划执行方案 根据需要,修改执行时间 3.修改完毕后 ...
- Python 面向对象Ⅳ
类的继承 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制. 通过继承创建的新类称为子类或派生类,被继承的类称为基类.父类或超类. 继承语法 在python中继承中的 ...
- Qt修改图片的背景色及设置背景色为透明的方法
先上干货. Qt下修改图片背景色的方法: 方法一: QPixmap CKnitWidget::ChangeImageColor(QPixmap sourcePixmap, QColor origCol ...
- 报错:没有与参数列表匹配的构造函数 "CFileDialog::CFileDialog" 实例
如果是在解决方案管理器窗口内,右击你的项目“项目”,然后选“属性”(最后一项),再点“配置属性”,是个“+”号,把它展开,然后选“常规”选项卡,倒数第三项“字符集”,选择“使用多字节字符集”.再编译应 ...
- 【Python】PIL模块
Python自建库,在爬虫等基础应用中更加简单好记,做整理以备自查. 目录 Image模块 open类.Save类.format类.Mode类.convert类.Size类.Info类.new类.Co ...