POI解析Excel文件工具类
/*** 读取excel数据*/public static List<Map<String, Object>> exportListFromExcel(File file, int sheetNum) throws IOException { return exportListFromExcel(new FileInputStream(file), FilenameUtils.getExtension(file.getName()), sheetNum); } public static List<Map<String, Object>> exportListFromExcel(InputStream is, String extensionName, int sheetNum) throws IOException { Workbook workbook = null; if (extensionName.toLowerCase().equals(XLS)) { workbook = new HSSFWorkbook(is); } else if (extensionName.toLowerCase().equals(XLSX)) { workbook = new XSSFWorkbook(is); } return readCell(workbook, sheetNum); } public static List<Map<String, Object>> readCell(Workbook workbook, int sheetNum) { Sheet sheet = workbook.getSheetAt(sheetNum); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();int sNum=1;if(sheetNum==0) { //如果是片1 sNum=0;}else if(sheetNum==1){//如果是片2 sNum=2;}for (int i=sNum; i <= sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i); Map<String, Object> map = new HashMap<String, Object>(); for (Cell cell : row) { CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex()); String key = cellRef.formatAsString(); switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: map.put(key, cell.getRichStringCellValue().getString()); break; case Cell.CELL_TYPE_NUMERIC: if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) { map.put(key, cell.getDateCellValue()); } else {DecimalFormat dfs = new DecimalFormat("0");map.put(key, dfs.format(cell.getNumericCellValue())); } break; case Cell.CELL_TYPE_BOOLEAN: map.put(key, cell.getBooleanCellValue()); break; case Cell.CELL_TYPE_FORMULA: map.put(key, cell.getCellFormula()); break; case Cell.CELL_TYPE_BLANK: break; case Cell.CELL_TYPE_ERROR: break; default: map.put(key, ""); } } list.add(map); } return list; }
POM文件
<!-- poi --><!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency><!-- commons-io --><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.5</version></dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.7</version></dependency>
相关文章:

关于Bulk加载模式
Bulk加载模式是Informatica提供的一种高性能数据加载模式,它利用数据库底层机制,依靠调用数据库本身提供的Utility来进行数据的加载 该方式将绕过数据库的log记录,以此提高数据库加载性能,因此Bulk模式不能进行数据的Rollback操…

C#:CsvReader读取.CSV文件(转换成DataTable)
原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv;using System;using System.Collections.Generic;using System.Data;using System.IO;using System.Linq;using System.Text;using System.Threading.Tas…

Standup Timer的MVC模式及项目结构分析
前言 学习android一段时间了,为了进一步了解android的应用是如何设计开发的,决定详细研究几个开源的android应用。从一些开源应用中吸收点东西,一边进行量的积累,一边探索android的学习研究方向。这里我首先选择了jwood的Standup …

ISDN的配置
ISDN的配置 1、 实验目的: 通过配置ISDN使两个路由器之间能够通信 2、 实验拓扑图: 3、 实验步骤: (1) R1的配置 Router> R1的ISDN配置 Router>en R…

5,ORM组件XCode(动手)
本篇才真正是XCode教程第一篇。《速览》是为了以最简洁的语言最短小的篇幅去吸引开发者;《简介》则是对XCode组件和XCode开发模式的一个整体介绍,让开发者从宏观的角度去理解XCode;《共舞》把XCode提到了一个新的高度,让开发者感受…

前端知识分享.md
目录 一些支持固定列和表头的组件库element UIiViewAmaze UIlayui一些比较好的IDEMVVM 框架VueNode生态其它SassTypeScript一些支持固定列和表头的组件库 element UI https://element.eleme.cn/#/zh-CN/component/table iView https://www.iviewui.com/components/table Amaze …

C 输入 输出
C 输入 & 输出 当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。 当我们提到输出时,这意味着要在屏幕上、打印机上或任…
搭建服务器环境 安装jdk、mysql、Tomcat 以及配置https 记录
1.在cenos上安装 jdk #在usr/local下创建 java 文件夹 mkdir java#将jdk拷贝到该文件夹中 [rootVM_0_15_centos jdk1.8.0_181]# cp jdk-8u181-linux-x64.tar.gz /usr/local/java/#解压该文件 [rootVM_0_15_centos jdk1.8.0_181]# tar -zxvf jdk-8u181-linux-x64.tar.gz #配置环…

一个Java程序员应该掌握的10项技能
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。 2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、 Ht…

逆向-攻防世界-maze
题目提示是走迷宫。 IDA载入程序分析。 输入字符长度必须是24,开头必须是nctf{,结尾必须是}。在125处按R就可以变成字符。 sub_400650和sub_400660是关键函数,分析sub_400650。 v10的下一字节减1. sub_400660v10的下一字节加1. 分析这两个函数…

linxu passwd 给linux用户设置密码 命令
[rootlocalhost ~]# passwd # 修改 root 用户的密码passwd 给linux用户设置密码 命令 passwd www 直接passwd是当前用户设置密码 非交互式修改密码: echo "123456" |passwd --stdin www [rootMongoDB ~]# echo "123456" | passwd…

MultipartFile 使用 记录
MultipartFile file 获取文件流 file.getInputStream(); 获取文件名称 String fileName file.getOriginalFilename(); 待补充

多语言加载图片问题
系统要求多语言:中文和英文,分别在两个xml文件中书写相关内容,类似: <root><resource name"VersionName">Version</resource><resource name"Logout">Logout</resource></r…

5.html基础标签:块级+行级元素+特殊字符+嵌套规则
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title> </head> <body><!-- 块元素:独立成一行(相当于标签前后都设置了br),可以设置宽高,默认宽高100%文字…

[摘]终于找到一个有助理解left/right/full outer join的例子
近日在学习《Understading DB2》的时候找到了一个例子,对于理解 left/right/full 三种 outer join 的大有裨益。 先看样本数据,来自DB2的示例数据库 sample: db2 > insert into employee values(99999,killkill,N,Huang,null,null,null,no…

vue——props的两种常用方法
vue——props的两种常用方法 1、实现父——>子的通信 举例如下: 父组件 parent.vue<children :channel"object1"></children> 子组件 children.vue export default{name:"children",props:["channel"],data(){return{…
idea导入模板
1.我的配置文件下载 请点下面的连接 https://download.csdn.net/download/huyande123/10728802 先导入第二个文件,在导入第一个文件 在此基础上添加了类注释和方法注释(方法注释快捷键 qtab) 参考链接 https://blog.csdn.net/qq_34581118…

为office添加繁简体转换
为office添加繁简体转换本人所在的公司是一间港资公司,很多香港同事习惯繁体,而我们内地的同事则习惯简体,于是免不了要进行繁简体转换,这时候就要装一个office的插件来达到这样的功能,如下:1、没装插件的时…

关闭Windows 7中的 Program Compatibility Assistant
感觉微软总喜欢把简单问题复杂化。安装几个小软件也老是弹出这样的对话框: 然后点击“What settings are applied?”,看到帮助中一段: 提示我在组策略里能够关闭这个烦人的程序兼容性助手,却没有明说,故意卖关子呢。那…

Swift学习:自动引用计数
swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存。通常情况下,swift 内存管理机制会一直起作用,你无须自己来考虑内存的管理。ARC 会在类的实例不再被使用时,自动释放其占用的内存。 然而在少数情况下…

简单又实用的分享!SharePoint母版页引用(实战)
分享人:广州华软 极简 一. 前言 此SharePoint 版本为2013,请注意版本号。此文以图文形式,描述了根网站及子网站引用母版页,需要注意的点已用图文形式以标明。 本文适用于初学者。 二. 目录 1. 前言 2. 目录 3. 如何引用母版页 4. …
mysql 修改某字段的格式为 utf8mb4
ALTER TABLE confession MODIFY content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;#查看表中字段字符集 SHOW FULL COLUMNS FROM confession;

TileList自动滚动指定单元格,可视部分
TileList自动滚动指定单元格,可视部分 TileList1.scrollToIndex(50)

深入.NET DataTable
1、ADO.NET相关对象一句话介绍1)DataAdapter:DataAdapter实际是一个SQL语句集合,因为对Database的操作最终需要归结到SQL语句。2)Dataset:DataSet可以理解成若干DataTable的集合,DataSet在内存里面维护一个表集合包括表间关系。对…

天平称球问题-转
称球问题一般会有以下3种变形: 1、N个球,其中有一个坏的,知道是轻还是重,用天平称出坏球来。 2、N个球,其中有一个坏的,不知是轻还是重,用天平称出坏球来。 3、N个球,其中有一个坏…

Java虚拟机垃圾收集算法
1、标记-清除算法 标记-清除算法分为 “标记” 和 “清除” 两个步骤:首先标记出所有需要回收的对象,然后在标记完成后统一回收所有被标记的对象,是垃圾收集算法中的最基础的收集算法。 缺点:一、标记和清除两个步骤效率都不高&am…

WMIC的用法
获得系统版本信息wmic datafile where Namec:\\windows\\explorer.exe get Manufacturer,Version,Filename获得信筒进程 wmic process list full 注意:这里的full也可以换成brief(简洁)获得硬件信息(这里以cpu为例…

洛谷P2763 试题库问题
题目:https://www.luogu.org/problemnew/show/P2763 题目描述 问题描述: 假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m 道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷…

梦断代码阅读笔记03
经过几天的阅读,终于将这本书看完了,读完了整个故事,我进行了简单的总结,感觉不仅仅是在写代码与计算机或软件交流,更多的是做事行为。 首先是做事得有目标。无论做什么事情都要有目标和动力,这样做起事来无…

能让导师喜欢的学生(转自论坛)
第一,明辨是非,从善如流。研究生是未来的高级知识分子,作为国家栋梁,将来很可能为国家和社会发展献计献策,如果不能明辨是非,如何做出正确建议和决策?如果不能从善如流,如何保证自己…