博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
excel 大文件解析原理实现
阅读量:6424 次
发布时间:2019-06-23

本文共 976 字,大约阅读时间需要 3 分钟。

 问题

目前的excel 不像之前的excel了可以支持的数据量更大,可以支持支持1048576行,16384列。

之前使用poi读取,直接报错,使用excel 事件的方式读取,还有不少的bug,关键是程序写的很复杂。

 

解决方案

我们知道excel 文件实际上是一个压缩包来的,我们将excel 直接改名为rar或zip文件。

我们可以将文件解压出来。

我们可以看到excel 实际上是一堆xml文件的集合。

worksheets 中实际存了 这个excel的sheets数据。

但是excel 在存数据的时候,他会将字符串数据存在在sharedString.xml 文件中。

sharedString.xml 文件数据如下:

guangzhou
beijing
hujun
c

这个数据存放了字符串的数据。

sheet 表文件也是一个xml文件,格式如下图:

我们查看xml文件可以得知。

 

 这里0,1,2,3 存的是 sharedString.xml 字符串的下标。

数字和日期型数据是直接存放在sheets 数据中的。

日期型数据的存储有些特殊

比如这个 他的日期实际是 2019-5-29日,这个是怎么计算的呢,他实际是从1900-0-0 开始加上43614天。

因此 明白了excel的结构 ,我们就很容易去实现读excel的代码,可以绕开poi哪些api。

直接读取xml。

 

实现思路

1.将文件解压。

2.读取sharedString.xml 将数据读取到list列表。

3.读取sheet.xml文件数据,遍历这个数据,将字符串的数据,去上面的列表中查找,其他类型的数据直接在sheet.xml 中读取。

 

转载于:https://www.cnblogs.com/yg_zhang/p/10946943.html

你可能感兴趣的文章
一个最小化的SpringBoot项目
查看>>
php常用字符串函数
查看>>
hdu 1576 A/B
查看>>
Mysql查询优化从入门到跑路(一)数据库与关系代数
查看>>
Google地图之OverlayView使用(自定义叠加层)
查看>>
连接mysql
查看>>
6.2docker(二)
查看>>
软件工程第一次作业
查看>>
Codeforces Gym 100203H Highways 最小生成树
查看>>
运用yum快速安装Apache+PHP+Tomcat(JSP)+MySQL
查看>>
WTL学习之WTL窗口的实现
查看>>
修改VS 2012调试默认浏览器
查看>>
8086CPU的8位寄存器数据存储情况
查看>>
多线程博文地址 http://www.cnblogs.com/nokiaguy/archive/2008/07/13/1241817.html
查看>>
统计程序总距离
查看>>
TextView的一些高级显示
查看>>
TortoiseSVN客户端使用的2个配置问题
查看>>
有道笔记的代码高亮问题
查看>>
总结第一波~~~
查看>>
深入理解React&Redux
查看>>