Java poi导入Excel
public MessageTo insertExcel(MultipartFile file) {
try {
InputStream is = file.getInputStream();
Workbook hssfWorkbook = null;
if (file.getOriginalFilename().endsWith("xlsx")) {
hssfWorkbook = new XSSFWorkbook(is);//Excel 2007
} else if (file.getOriginalFilename().endsWith("xls")) {
hssfWorkbook = new HSSFWorkbook(is);//Excel 2003
}
Sheet hssfSheet = hssfWorkbook.getSheetAt(0);
String titleformat = "名称,类型,编号,所属市,所属地区,经度,纬度,地址,联系电话,成立时间,";
String title = "";
Row firstRow = hssfSheet.getRow(0);
for (int j = 0; j < firstRow.getLastCellNum(); j++) {
title += firstRow.getCell(j).toString().trim() + ',';
}
if (!title.equals(titleformat)) {
return MessageTo.ofError("文件不符合格式!你可以下载模板重新导入!");
}
List<String> regionnameList = new ArrayList<>();
List<String> nameList = new ArrayList<>();
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
Row hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
if (null == hssfRow.getCell(0)) {
return MessageTo.ofError("Excel名称有列为空");
}
if (null == hssfRow.getCell(1)) {
return MessageTo.ofError("Excel类型有列为空");
}
if (null == hssfRow.getCell(3)) {
return MessageTo.ofError("Excel所属市有列为空");
}
if (null == hssfRow.getCell(4)) {
return MessageTo.ofError("Excel所属地区类型有列为空");
}
nameList.add(hssfRow.getCell(0).toString());
regionnameList.add(hssfRow.getCell(3).toString());
regionnameList.add(hssfRow.getCell(4).toString());
}
}
regionnameList = regionnameList.stream().distinct().collect(Collectors.toList());
List<CommonRegion> regionList = commonRegionMapperExt.getRegionByName(regionnameList);
List<CommonPartyOrgan> partyOrganList = commonPartyOrganMapperExt.getPartyOrganByName(nameList);
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
Row hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
String name = hssfRow.getCell(0).toString();
List<CommonPartyOrgan> partyOrgan1 = partyOrganList.stream().filter(
(CommonPartyOrgan s) -> s.getName().equals(name))
.collect(Collectors.toList());
if (partyOrgan1.size() == 0) {
CommonPartyOrgan partyOrgan = new CommonPartyOrgan();
partyOrgan.setId(PrimaryKeyUtil.getPrimaryKeyId());
partyOrgan.setName(name);
String type = hssfRow.getCell(1).toString();
Byte OrganType = null;
if (type.equals("党委"))
OrganType = 1;
else if (type.equals("党总支"))
OrganType = 2;
else if (type.equals("党支部"))
OrganType = 3;
partyOrgan.setOrganType(OrganType);
partyOrgan.setCode(hssfRow.getCell(2).toString());
String city = hssfRow.getCell(3).toString();
List<CommonRegion> list1 = regionList.stream().filter((CommonRegion s) -> s.getRegionName().equals(city))
.collect(Collectors.toList());
if (list1.size() > 0) {
partyOrgan.setProvinceCode(list1.get(0).getParentRegionCode());
partyOrgan.setCityCode(list1.get(0).getRegionCode());
} else
return MessageTo.ofError(city + "不存在");
String area = hssfRow.getCell(4).toString();
List<CommonRegion> list2 = regionList.stream().filter((CommonRegion s) -> s.getRegionName().equals(area))
.collect(Collectors.toList());
if (list2.size() > 0)
partyOrgan.setAreaCode(list2.get(0).getRegionCode());
else
return MessageTo.ofError(area + "不存在");
if (hssfRow.getCell(5) != null)
partyOrgan.setLongitude(Double.valueOf(hssfRow.getCell(5).toString()));
if (hssfRow.getCell(6) != null)
partyOrgan.setLatitude(Double.valueOf(hssfRow.getCell(6).toString()));
partyOrgan.setAddress(hssfRow.getCell(7) == null ? null : hssfRow.getCell(7).toString());
String tel = "";
int cellType = hssfRow.getCell(8).getCellType();
if (cellType == 0) {
DataFormatter dataFormatter = new DataFormatter();
dataFormatter.addFormat("###########", null);
tel = dataFormatter.formatCellValue(hssfRow.getCell(8));
} else {
tel = hssfRow.getCell(8).toString();
}
Date time = hssfRow.getCell(9) == null ? null : hssfRow.getCell(9).getDateCellValue();
partyOrgan.setEstablishedTime(time);
partyOrgan.setCreateUserId(LoginContext.getUserId());
Date now = new Date();
partyOrgan.setCreateTime(now);
partyOrgan.setIsdel("N");
commonPartyOrganMapper.insertSelective(partyOrgan);
}
}
}
return MessageTo.ofSuccess("0", "导入成功");
} catch (Exception e) {
e.printStackTrace();
return MessageTo.ofError("500", e.getMessage());
}
}
Java poi导入Excel的更多相关文章
- 在java poi导入Excel通用工具类示例详解
转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36 作者:daochuwenziyao 我要评论 这篇文章主要给大家介绍了关于在j ...
- java poi 导入excel
最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包 http://pan.baidu.com/s/1sjPuWDR pack ...
- Java POI导入Excel文件
今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...
- java poi导入Excel(个人代码)
案例使用的框架:jsp+spring+mybaties <form id="importForm" name="importForm" method=&q ...
- 解决java POI导入Excel超时问题
由于要导入大量数据,后台会耗费很长时间,导致超时. 本项目前端request.js中设定的超时时间为150s. const service = axios.create({ baseURL: base ...
- java poi导入EXCEL xls文件代码
/** * */ package com.bn.car.common.report.excel; import java.io.FileInputStream; import java.io.IOEx ...
- Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)
ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...
- java POI创建Excel示例(xslx和xsl区别 )
Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...
- java如何导入Excel文件
Java使用POI导入Excel文件,操作起来比较简单,支持xlsx格式. 下载POI资源包 从官网https://poi.apache.org/下载POI,笔者选择的是版本是3.17,下载后文件名是 ...
- poi导入Excel,数字科学记数法转换
在这里分享一下使用poi 导入Excel时 把数字转换为科学记数法的解决方法: 就是使用DecimalFormat对 i 进行了格式化 结果为:
随机推荐
- git prior sync failed; rebase still in progress
方案一: 将这个git直接删掉,rm common/ -rf 然后再回到项目根目录repo sync 方案二: git rebase --abort
- CTF学习笔记(二)
二.常见的HTML知识 (一)rorbts协议 robots协议也称爬虫协议.爬虫规则等,是指网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,而搜索引擎则通过读 ...
- socket的客户端和服务端(Windows控制台程序)
首先是两个程序,分别是socket的客户端和服务端.(在windows系统vc6.0编译)服务器端:#include <Winsock2.h>#include <stdio.h> ...
- (原创)odoo动态设置树形视图中的字段,每个用户可定制自己要显示的字段
模块详情
- 如何使用使用Mysql中的慢查。
在MySQL中可以使用慢查找出运行速度慢的SQL语句. 1.在MySQL命令行中查看慢查: show variables like '%query%' 如图 "ON" 表示慢查 ...
- GNSS模块
1. Location服务注册 第一个注册是在 SystemServer 中将 location 服务注册到 ServiceManager中去:第二个注册是在 SystemServiceRegistr ...
- css背景模糊化
处理背景模糊化 在css中,可以利用filter属性和blur()函数实现高斯模糊效果,filter属性用于设置图片元素的可视效果,配合blur()函数使用可给图片元素添加高斯模糊效果,语法为&quo ...
- 无界面Linux系统和Windows系统使用selenium爬取CNVD数据
因为CNVD官网采用了反爬机制,所以使用selenium能够更容易的爬取漏洞数据 1.在Windows中使用 注意根据chrome版本下载对应chromedriver 2.在无界面的Linux中使用 ...
- Qt多线程编程之QThread
背景引言[ GUI主线程 +子线程] 跟C++11中很像的是,Qt中使用QThread来管理线程,一个QThread对象管理一个线程,在使用上有很多跟C++11中相似的地方,但更多的是Qt中独有的内容 ...
- flink 版本
从1.10.0开始,flink版本是一个分界线,所以如果用>1.10版本的特性,一些flink引用可以从1.10官网文档中查 后面版本中没有这些说明了. flink代码文档地址:https:// ...