• Stars
    star
    107
  • Rank 323,587 (Top 7 %)
  • Language
    Java
  • Created almost 7 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

针对excel几万条以上大数据量的读取,采用事件驱动模式,兼容excel2003和excel2007两种格式文件。

POI读取Excel有两种模式,一种是用户模式,一种是SAX事件驱动模式,将xlsx格式的文档转换成CSV格式后进行读取。

用户模式API接口丰富,使用POI的API可以很容易读取Excel,但用户模式消耗的内存很大,当遇到很大sheet、大数据网格,假空行、公式等问题时,很容易导致内存溢出。

POI官方推荐解决内存溢出的方式使用CVS格式解析,即SAX事件驱动模式。

下面主要是讲解如何读取大批量数据:

POI以SAX解析excel2007文件:
解决思路:通过继承DefaultHandler类,重写process(),startElement(),characters(),endElement()这四个方法。 process()方式主要是遍历所有的sheet,并依次调用startElement()、characters()方法、endElement()这三个方法。startElement()用于设定单元格的数字类型(如日期、数字、字符串等等)。 characters()用于获取该单元格对应的索引值或是内容值(如果单元格类型是字符串、INLINESTR、数字、日期则获取的是索引值;其他如布尔值、错误、公式则获取的是内容值)。 endElement()根据startElement()的单元格数字类型和characters()的索引值或内容值,最终得出单元格的内容值,并打印出来。

POI通过继承HSSFListener类来解决Excel2003文件:
解决思路:重写process(),processRecord()两个方法,其中processRecord是核心方法,用于处理sheetName和各种单元格数字类型。

参考资料:

https://www.cnblogs.com/huangjian2/p/6238237.html

https://www.cnblogs.com/yfrs/p/5689347.html

http://blog.csdn.net/lishengbo/article/details/40711769

https://www.cnblogs.com/wshsdlau/p/5643847.html

http://blog.csdn.net/lipinganq/article/details/78775195

http://blog.csdn.net/lipinganq/article/details/53389501

http://blog.csdn.net/zmx729618/article/details/72639037

http://blog.csdn.net/daiyutage/article/details/53010491

More Repositories

1

Interview_BigData

关于大数据的面试题,包括hadoop、hbase、hive、spark、storm、zookeeper、kafka、flume、logstash、redis、ELK、ETL、算法等等,持续更新中
443
star
2

BigData_AutomaticDeploy

大数据自动化部署,包括自动化部署hadoop、hive、hbase、spark、storm等等一系列组件
Shell
66
star
3

HBaseDemo

记录HBase版本API的变迁Demo
Java
33
star
4

JavaInvokingHttpInterface

Java调用第三方http接口的方式,包括JDK类HttpUrlConnection、HttpClient、CloseableHttpClient、SpringBoot-RestTemplate等方式
Java
14
star
5

LogMonitor

利用kafka+storm+mysql/redis构建日志监控系统
Java
13
star
6

CustomRpcFramework

自定义RPC框架,并提供了一个简单示例
Java
13
star
7

SparkStreamingDemo

准实时分布式流处理框架
Scala
6
star
8

MongodbCluster_autoDeploy

mongodb可以根据安装模板,一键自动化部署,包括mongodb集群配置,分片副本集的初始化,数据库初始化,添加mongodb日志每天切割删除和mongodb进程存活监控的定时任务
Shell
6
star
9

ElasticSearchDemo

elasticSearch的一些demo,以及elasticSearch的一些学习资源
Java
4
star
10

KafkaDemo

Apache kafka是消息中间件的一种, 用于构建实时数据管道和流应用程序,小白学习
Java
3
star
11

DataMining

介绍数据挖掘流程以及一些数据挖掘案例
Jupyter Notebook
3
star
12

ShiroLearn

Shiro学习与练习项目
Java
2
star
13

BigData_CollectionClean

大数据采集、清洗流程。主要简述各种数据源采集、使用哪些技术对大批量数据进行清洗。
2
star
14

optiontrade

期权量化交易
Python
2
star
15

jdk8-source

jdk8源码阅读并添加注释,主要是集合、多线程、锁等
Java
2
star
16

DataBaseNotes

记录一些数据库的sql优化、查询、规范信息等等
2
star
17

HotSpotTestDemo

Java虚拟机hotspot各种参数测试例子
1
star
18

JavaNIODemo

Java的New IO学习Api
Java
1
star
19

DuddoDemo

阿里Duddo分布式服务框架学习demo,需要开启zookeeper才能运行
Java
1
star
20

PythonLearnDemo

python官方学习文档demo
1
star
21

SparkDemo

Spark一些简单示例,如wordcount
Scala
1
star
22

JavaNETDemo

java.net包下一些网络编程相关的类和接口实例
Java
1
star
23

Zookeeper-Java-API-Demo

这主要是用java语言编写了zookeeper的znode节点增删改查,以及利用zookeeper实现的分布式HA应用和分布式共享锁
Java
1
star
24

FlinkDemo

收集flink搭建、开发Demo以及一些flink成长的网址
Scala
1
star
25

cnblogs-template

博客园模板
JavaScript
1
star
26

ImpalaDemo

impala简单的jdbc连接和集成C3P0连接demo
Java
1
star
27

AngularJs1Demo

AngularJs2.X版本的Demo,不涉及TypeScript
HTML
1
star
28

MavenPackage

介绍4种常用的maven打包方式
Scala
1
star