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. parse data from Nacos error

    SpringCloud Alibaba从Nacos读取配置文件. 在开发工具运行,没有问题,正常启动. 打包后,jar包启动 xxxx.jar,出现错误: 2022-10-11 11:20:25.28 ...

  2. web执行shell脚本

    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/15584456.html 缘起 去年写过一个shell脚本用来校验统计打点,工作使用.发现同事不太熟悉这块, ...

  3. #pragma directive

    #pragma package(smart_init) #pragma package(smart_init)确保已打包的单元按照其依赖关系确定的顺序进行初始化(默认情况下包含在package(包)源 ...

  4. Python的入门学习Day 22~24——form”夜曲编程“

    Day 22 time:2021.8.19. ​ 顺着歌曲的旋律,内心一下子就安静了呢.终于,我可以好好写日记了,徜徉在一片金色的花海里.今天主要学习了匿名函数.这是一种很有趣的函数呢,像孙悟空会72 ...

  5. k8s Service yaml文件编写

    apiVersion: app/v1 #API的版本号,版本号可以用 kubectl api-versions 查询到 kind: Service #表明资源对象,例如Pod.RC.Service.N ...

  6. Access 时间查询 与 SQL SERVER 不一样的几个地方

    最近用到了ACCESS 数据库 ,与之前用SQL SERVER  还是有点区别的. 1.  时间 之间 用 # 连接 如下: public static string GetUserInfo(stri ...

  7. Python学习笔记(六)循环

    一.while循环 1.while在给定的判断条件为True时执行循环体,否则退出循环体 1 flag = True 2 while flag: 3 print('正确') 4 flag = Fals ...

  8. android修改frameework与service,vendor分区需要替换的文件

    1. 修改framework代码 需要将framework.jar包提供给android studio使用,并替换车机内文件(两种framework.jar不是同一文件,一个是生成文件一个是安卓目录文 ...

  9. IDEA 项目运行内存设置

    IDEA 运行内存设置 1.堆内存设置 2.help ---- edit custom VM options 参考摘录:https://blog.csdn.net/wentaolv/article/d ...

  10. linux合并bilibili下载的blv视频

    B站下载的学习视频,用python+sh合并处理,自己mark一下 手机bilibili下载了视频,想要搞到电脑上看,结果发现下载下来的都是文件夹里的一堆片段,仔细一看还是 .blv,脑那样啊! 在虚 ...