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的更多相关文章

  1. 在java poi导入Excel通用工具类示例详解

    转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36   作者:daochuwenziyao   我要评论   这篇文章主要给大家介绍了关于在j ...

  2. java poi 导入excel

    最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包  http://pan.baidu.com/s/1sjPuWDR pack ...

  3. Java POI导入Excel文件

    今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...

  4. java poi导入Excel(个人代码)

    案例使用的框架:jsp+spring+mybaties <form id="importForm" name="importForm" method=&q ...

  5. 解决java POI导入Excel超时问题

    由于要导入大量数据,后台会耗费很长时间,导致超时. 本项目前端request.js中设定的超时时间为150s. const service = axios.create({ baseURL: base ...

  6. java poi导入EXCEL xls文件代码

    /** * */ package com.bn.car.common.report.excel; import java.io.FileInputStream; import java.io.IOEx ...

  7. Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

    ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...

  8. java POI创建Excel示例(xslx和xsl区别 )

    Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...

  9. java如何导入Excel文件

    Java使用POI导入Excel文件,操作起来比较简单,支持xlsx格式. 下载POI资源包 从官网https://poi.apache.org/下载POI,笔者选择的是版本是3.17,下载后文件名是 ...

  10. poi导入Excel,数字科学记数法转换

    在这里分享一下使用poi 导入Excel时 把数字转换为科学记数法的解决方法: 就是使用DecimalFormat对 i 进行了格式化 结果为:

随机推荐

  1. vue.js----之前端路由(二)

    上一篇我们已经把vue框架搭好了,接下来我们进行路由模块 在src目录下新建router.js 添加如下代码 1 /** 2 * Created by sioxa on 2016/10/29 0029 ...

  2. python中下拉框选择

    如选择省区城市 provice = driver.find_element_by_id('****') #先给定位的元素付个变量 select(prvice).select_by_bisible_te ...

  3. snapshot备份

    snapshot C: "h:\esd\$date_$hour_$minute_C.sna" -L0 -R -G snapshot64.exe C: "H:\ESD\$d ...

  4. 关于vCenter6.7 导出的ovf 不能导入vCenter6.5/6.0的问题

    正常从6.7导出ovf文件,包含四个文件. 编辑ovf文件,删除下面五条条目, 导入6.5时, 只用 ovf 和 vmdk 这两个文件导入 ,即可!

  5. python生成一个WAV文件的正弦波

    import numpy as np import matplotlib.pyplot as plt T = 1.0 / sample_rate #周期 x = np.arange(0, 1.0, T ...

  6. 广告网络归因技术之SKAdNetwork

    IDFA的背景 为了保护用户隐私,早在2012年就不再允许其生态中的玩家获取用户的唯一标识符,但是商家在移动端打广告的时候又希望能监控到每一次广告投放的效果,因此,苹果想出了折中的办法,就是提供另外一 ...

  7. vue获取标签对象的方式

    我知道2种方式: 1.在标签内 使用 ref 属性定义对象名,使用this.$refs.[name] 调用 2.在标签内 使用 函数传递事件对象, 定义, <div @click="h ...

  8. 403 forbidden 与 413Too Large

    http://www.ccschy.com/shuma/12846.html https://blog.51cto.com/u_15127556/4543159 查的有关资料如下,最后的原因是服务器网 ...

  9. 音视频技术入门课- 05 使用FFmpeg与OBS进行直播推流

    做直播推流的前提是要有直播服务器接收直播流,所以需要我们自己建设一个流媒体服务器. 流媒体服务器SRS SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SR ...

  10. Java中如何判断两个对象是否相等

    参考:https://blog.csdn.net/u013063153/article/details/78808923 下面是自己开发过程中的实现 package com.***.***.entit ...