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. “const char*“类型的实参与“LPCWSTR-类型的形参不兼容

    const char *类型的实参与LPCWSTR类型的形参不兼容解决 LPCWSTR类型是是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型(4字节,Unicode编码宽字节 ...

  2. 纷繁复杂的操作系统到底是什么关系从APPLE到Android到Linux等

    各个系统之间的关系 最近接触了很多很多系统,多种多样,纷繁复杂,感觉有点乱想整理以下思路,结果一下笔内容还挺多,不全,就是现在能见到的,梳理一下,站在一个外行的角度写写省的乱,不科学,也不知道是否完全 ...

  3. HCIP-进阶实验04-多运营商BGP协议部署

    HCIP-进阶实验04-多运营商BGP协议部署 1 实验拓扑 2 实验环境说明 2.1 IP地址规划表 设备 接口 IP地址 备注 R1 G0/0/0 12.12.12.1/30 Loopback0 ...

  4. Linux 第五节 (shell脚本while循环,case,计划任务,用户及权限)

    #!/bin/bash #this is a test script PRICE=$(expr $RANDOM % 1000)   //将随机得出的数字取余 TIMES=0 while true do ...

  5. 前台主页功能-前台轮播图功能完成-git介绍和安装-git使用流程-git常用命令-git忽略文件

    目录 前台主页功能-前台轮播图功能完成-git介绍和安装-git使用流程-git常用命令-git忽略文件 昨日内容回顾 今日内容概要 今日内容详细 0 导出项目依赖 0 学长问题解析 1 前台主页功能 ...

  6. java中indexOf()获取指定次数的下标

    indexOf() :指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检查指定数量的字符位置 Java中提供了四中查找方法: int indexOf(String str) 返回第一 ...

  7. (1019) rapidsvn 安装

    https://blog.csdn.net/mzpmzk/article/details/106332039

  8. python随机数模拟

    `#随机数 import random red = range(1,36,1) red_target_list=[] i=1 while i< 6: red_ran_index=random.r ...

  9. Delphi as 和 is 的使用

    as就是把某个类型对象转换为某个指定类型,这样方便使用指定类型中的一些成员. is就是判断某个对象是不是某个类型,可以筛选出我们需要的对象. 下面是一个as is 的实例代码,该代码同时也实现了两种方 ...

  10. CIL指令和指针类型的操作

    对象引用的使用在CIL中受到严格限制.它们几乎完全被使用带有VOS(Virtual Object System)指令,这些指令是专门为处理对象和部分对象引用而设计的. 常规操作如下: 首先我们需要将加 ...