pom依赖 导入poi依赖

    <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>

工具类,里面也有main方法
注意:表格的列值,不同有的是整数,有的日期,有的是字符串‘
使用 row.getCell(0).setCellType(CellType.NUMERIC); 进行列格式设置
setCellType 自己点进去看类型把

package com.sxjlrj.common.util;import java.io.File;
import java.io.FileInputStream;
import java.math.BigDecimal;
import java.util.*;import com.sxjlrj.manager.censusManager.model.DtStatisticBusiness;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ExcelUtil {public static void main(String[] args) {File file = new File("C:\\Users\\gaoyuan\\Desktop\\2017年太原(1).xls");// File file = new File("E:/2.xls");try {List<DtStatisticBusiness> list = importExcel(file);} catch (Exception e) {e.printStackTrace();}}public static List<DtStatisticBusiness> importExcel(File file) throws Exception {Workbook wb = null;String fileName = file.getName();// 读取上传文件(excel)的名字,含后缀后// 根据文件后缀名不同(xls和xlsx)获得不同的Workbook实现类对象Iterator<Sheet> sheets = null;List<DtStatisticBusiness> returnlist = new ArrayList<DtStatisticBusiness>();try {if (fileName.endsWith("xls")) {wb = new HSSFWorkbook(new FileInputStream(file));sheets = wb.iterator();} else if (fileName.endsWith("xlsx")) {wb = new XSSFWorkbook(new FileInputStream(file));sheets = wb.iterator();}if (sheets == null) {throw new Exception("excel中不含有sheet工作表");}// 遍历excel里每个sheet的数据。while (sheets.hasNext()) {Sheet sheet = sheets.next();String sheetName = sheet.getSheetName();//读Sheet2的数据if(sheetName.equals("2020")){returnlist =getCellValue(sheet);}}} catch (Exception ex) {throw ex;} finally {if (wb != null) wb.close();}return returnlist;}// 获取每一个Sheet工作表中的数。private static List<DtStatisticBusiness> getCellValue(Sheet sheet) {List<DtStatisticBusiness> list = new ArrayList<DtStatisticBusiness>();// sheet.getPhysicalNumberOfRows():获取的是物理行数,也就是不包括那些空行(隔行)的情况for (int i = (sheet.getFirstRowNum()+1); i < sheet.getPhysicalNumberOfRows(); i++) {// 获得第i行对象Row row = sheet.getRow(i);if (row == null) {continue;} else {// getLastCellNum:获取列数(比最后一列列标大1)// 通常导入的excel是符合需求规范的,这里因为我们准备的excel列数是7列,如果小于7列说明传入的excel文件有问题。if (row.getLastCellNum() < 4) {continue;}//int j = row.getFirstCellNum();// 获取第i行第一个单元格的下标// 第一列=日期//判断头部if (row.getCell(0).getCellTypeEnum().equals(CellType.STRING)){continue;}//封装数据DtStatisticBusiness dtStatisticBusiness = new DtStatisticBusiness();row.getCell(0).setCellType(CellType.NUMERIC);//row.getCell(j).setCellType(CellType.STRING);Date dateCellValue = row.getCell(0).getDateCellValue();if (StringUtil.isEmpty(dateCellValue)||dateCellValue.equals("总计")||dateCellValue.equals("日期")) {continue;}dtStatisticBusiness.setReportDate(dateCellValue);//map.put("schoolName", schoolName);//第二列=运输起架次row.getCell(1).setCellType(CellType.STRING);String transportCell = row.getCell(1).getStringCellValue();if (StringUtil.isEmpty(transportCell)) {continue;}dtStatisticBusiness.setTransportPre(new BigDecimal(transportCell));dtStatisticBusiness.setTransportRev(new BigDecimal(transportCell));//第三列=旅客吞吐量row.getCell(2).setCellType(CellType.STRING);String passengerCell = row.getCell(2).getStringCellValue();if (StringUtil.isEmpty(passengerCell)) {continue;}BigDecimal passengerDivide = new BigDecimal(passengerCell).divide(new BigDecimal(10000));dtStatisticBusiness.setPassengerPre(passengerDivide);dtStatisticBusiness.setPassengerRev(passengerDivide);//第四列=货邮吞吐量row.getCell(3).setCellType(CellType.STRING);String cargoCell = row.getCell(3).getStringCellValue();if (StringUtil.isEmpty(cargoCell)) {continue;}BigDecimal cargoDivide = new BigDecimal(cargoCell).divide(new BigDecimal(1000));dtStatisticBusiness.setCargoRev(cargoDivide);dtStatisticBusiness.setCargoPre(cargoDivide);list.add(dtStatisticBusiness);// System.out.println("日期="+dateCellValue+"运输起架次="+transportCell+"旅客吞吐量="+passengerCell+"货邮吞吐量="+cargoCell);/*    //map.put("name", name);Cell cell = row.getCell(j++);// 学号(在excel中,学号可能是纯数字,也可能是字母在数字)if (cell.getCellTypeEnum().equals(CellType.STRING)) {// 如果是字符串,直接获取值map.put("sn", cell.getStringCellValue());} else if (cell.getCellTypeEnum().equals(CellType.NUMERIC)) {// 如果excel中学号是纯数字,获取的值是数值类型,再toPlainString()转为字符类型,因为数据库中学号字段需要是字符类型。map.put("sn", new BigDecimal(cell.getNumericCellValue()).toPlainString());}cell = row.getCell(j++);// 年级(数据库中,年级是int类型,所以这里我们转换为int)if (cell.getCellTypeEnum().equals(CellType.STRING)) {try {String gradeStr = cell.getStringCellValue();//int grade = Integer.parseInt(gradeStr);map.put("grade", grade);} catch (Exception e) {continue;}} else if (cell.getCellTypeEnum().equals(CellType.NUMERIC)) {map.put("grade", (int) cell.getNumericCellValue());}cell = row.getCell(j++);// 班级(数据库中,年级是int类型,所以这里我们转换为int)if (cell.getCellTypeEnum().equals(CellType.STRING)) {try {String klassStr = cell.getStringCellValue();int klass = Integer.parseInt(klassStr);map.put("klass", klass);} catch (Exception e) {continue;}} else {map.put("klass", (int) cell.getNumericCellValue());}String genderStr = row.getCell(j++).getStringCellValue();int gender = "男".equals(genderStr) ? 1 : "女".equals(genderStr) ? 0 : 2;map.put("gender", gender);if (j <= row.getLastCellNum()) {cell = row.getCell(j++);// 手机号if (cell.getCellTypeEnum().equals(CellType.STRING))map.put("phone", cell.getStringCellValue());else if (cell.getCellTypeEnum().equals(CellType.NUMERIC)) map.put("phone",new BigDecimal(cell.getNumericCellValue()).toPlainString());}list.add(map);*/}}return list;}}

java Poi导入exel表格的数据,入库相关推荐

  1. java poi导出Excel表格超大数据量解决方案

    Java实现导出excel表格功能,大部分都会使用apache poi,apache poi API 地址 POI之前的版本不支持大数据量处理,如果数据过多则经常报OOM错误,有时候调整JVM大小效果 ...

  2. Java POI 导入Excell

    ##Java POI 导入Excell 导入表格 public String toExcel(HttpServletRequest request, HttpServletResponse respo ...

  3. java poi对Excel表格进行单元行删除

    java poi对Excel表格进行单元行删除 前几天工作时,突然需要去使用POI 来对Excel 表格进行操作,其他的操作都都没什么问题,但是在需要删除某些单元行的时候碰到了一下小坑,记录下来,防止 ...

  4. 使用POI读取Excel表格中数据

    使用POI读取Excel表格中数据 已经在 使用POI读取Excel表格中数据2优化.(https://blog.csdn.net/qq_36570464/article/details/107053 ...

  5. java poi 导入报错,Cannot get a NUMERIC value from a STRING cell

    背景:在使用java的poi导入excel文件时,报错:Cannot get a NUMERIC value from a STRING cell,大致的意思就是不能从字符串的单元格获取到Number ...

  6. word导入mysql表格_数据插入Word 表格步骤

    数据插入Word 表格步骤 数据插入Word 表格步骤 (1)单击[数据库]工具栏上的[插入数据库]按钮,出现[数 据库]对话框,如图4-33 所示. (2)单击[获取数据]按钮,弹出[选择数据源]对 ...

  7. Java web批量导入excel表格的数据进入数据库的实现

    1.导入poi相关jar包 对于只操作2003及以前版本的excel,只需要导入poi-XXX.jar ,如果还需要对2007及以后版本进行操作,则需要导入 poi-ooxml-XXX.jarpoi- ...

  8. java poi导入50万数据_java从oracle读取50万条数据写入Excel中抛GC overhead limit exc

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package com.OracleExcel; import java.sql.*; import java.io.*; import java.uti ...

  9. Java poi导入合并单元格的excel数据【最完整】附pom文件和excel截图

    代码如下: package com.haha.demo;import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermo ...

最新文章

  1. 解决修改“文件夹选项”后仍不能显示隐藏文件一例
  2. 案例分析:机场运作系统
  3. 转载:【opencv入门教程之三】:组件结构
  4. centos7装完chrome无法使用yum问题解决
  5. kali字典_kali黑客系统wpscan工具扫描wordpress漏洞入侵攻击测试教程
  6. php公交查询系统源代码,基于Smarty公交查询系统的设计与实现(PHP,MySQL)
  7. 2020 年,云游戏将爆发?各大科技公司云游戏布局大曝光!
  8. LeetCode-287 寻找重复数 二分法
  9. 哪个行业的产品经理可以做的久远
  10. wireshark抓包教程详解
  11. GoFrame带你从0-1快速入门
  12. VS2013编译最简单的PPAPI插件
  13. python实现基于selenium的天猫淘宝秒杀,支持定金商品,自动付款
  14. 0元参会丨第十届数据技术嘉年华精彩抢先速览
  15. 美国网络再次“瘫痪”,华为意外“出头”,网络服务器世界第一
  16. 抖音直播运营 | 疫情时代下如何用直播驱动品牌业务增长
  17. 天翎低代码平台助力企业业务流程集成,为企业降本增效
  18. 【百度地图API】JS版本的常见问题
  19. storyboard搭建项目_Storyboard
  20. Handle初解,看完你就懂了handle

热门文章

  1. 每日程序C语言30-static作用
  2. java构造函数调用其他程序的顺序_java初始化构造函数调用顺序
  3. Java黑皮书课后题第6章:*6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数…例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序
  4. 6.求级数e = 1 + 1/1! + 1/2! + 1/3! + …… 1/n! 要求: 求n项(n由键盘输入)或最后一项小于10-6结束。
  5. 关于Unity实现AR功能(四)设置相机的对焦
  6. 根据接口入参不同返回不同对象集合的方法
  7. C# winform C/S WebBrowser 微信第三方登录
  8. reac——父组件向子组件传递值,子组件何时能同步获得父组件改变后的值
  9. ie 9 渐变背景色兼容问题
  10. JSP 基础之 JSTL c:forEach用法