用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
随机推荐
- [SQLAlchemy] synchronize_session参数
- string::find_first_not_of
string (1) size_t find_first_not_of (const string& str, size_t pos = 0) const noexcept; c-string ...
- linux下PHP扩展安装memcache模块
linux下PHP扩展安装memcache模块 roid 安装环境RHEL 4Php 5.2.6 所需软件libevent-1.4.6-stable.tar.gz (http://monkey.o ...
- 【Wince-DataTable填充ListView】DataTable的数据填充到ListView控件,适用.Net2.0
在开发WinCE6.0程序的时候,要把DataTable的数据显示到ListView控件上,无法使用绑定, 只能使用循环遍历. 思路:外循环遍历行,内循环遍历列 //DataTable:dt2 //L ...
- C# 获取 与 修改 web.config中的值(修改Xml文件)
定义web.config 中 appSettings 节点 <appSettings> <add key="domainExist" value="fa ...
- Ueditor 从word中复制内容带多张图片
粘贴文本 注意,以下配置暂时对 IE 无效.IE 暂时使用系统自带的粘贴功能,没有样式过滤! 关闭粘贴样式的过滤 当从其他网页复制文本内容粘贴到编辑器中,编辑器会默认过滤掉复制文本中自带的样式,目的是 ...
- Linux服务器pxe+kickstart部署无人值守安装
一. 使用光盘镜像安装好一台Redhat6.8系统的虚拟机(图形化界面) 二. 部署相关服务程序 1. 安装并配置dhcpd服务程序 a)安装dhcp服务程序 b)对dhcp服务进 ...
- HDU6579 Operation
题目链接 问题分析 区间求异或和最大,比较自然的想到了线性基.而每次求一个区间的线性基显然是行不通的.我们考虑在每个位置求出首位置到当前位置的线性基.同时我们要使线性基中高位的位置所选的数尽量靠后.这 ...
- 使用单调队列维护决策三元组实现决策单调性优化DP的一些细节
以[BZOJ2687]交与并为例给出代码. #include <bits/stdc++.h> #define rin(i,a,b) for(register int i=(a);i< ...
- win7系统安装Mysql5.7
1.下载mysql的zip包 把zip包解压到指定的目录,目录不能有中文和空格 2.进入%mysql%目录(注:%mysql%是解压目录,我的是:D:\JavaTool\mysql) 在%mysql% ...