`

excel大数据量处理小结(excel07)

阅读更多


     前端时间因为项目中excel(2007)上传下载的所要支持的数据量剧增,所以研究学习了下大数据量excel的处理方式,并应用到product上去,这里简单recap下.主要有三点。
一 excel2003跟excel2007的区别。
    03的excel是基于biff8格式的(项目目前不要求支持,所以这里不探讨),而到07,微软已经将其转换为基于开放式的 XML实现了,所以07的大数据量处理思路就变得清晰得多了:通过操作其XML的内容来达到读写excel的目的。
二 user model与event model的区别。
    正常的POI代码操作模式即user model,他是将excel文件信息一次性读入内存,形成一些我们熟悉的结构,如Workbook、Sheet、Row、Cell等,而我们的开发则会基于这些内存中对象,只要给个列和行号,就可以读或写到excel中,开发相当便捷。不过其缺点也很明显,由于其是一次性读入内存,消耗的内存则可能会成为瓶颈,我做过个简单的测试,3000行30列的一个excel,大小在30K左右,其读入内存,形成POI的系列对象所消耗的内存已经达到40M左右,如果数据量继续增大则其内存消耗也会持续上涨,再考虑到用户并发操作,product上内存的消耗会是个比较大的问题。所以需要考虑采用其他的方式--event model。
event model的方式不要求将excel的信息一次性的读入内存,他会按顺序读取excel的内容,从第一个sheet的第一行第一列开始,一直读到最后一个sheet的最后一处有值的地方结束,他不能够回头读,也不能跳着读,所以它要求应用程序一边读取数据,一边能够处理数据。这样的好处是内存消耗不大,也相对稳定,缺点就是其提供的API不够丰富,且具体实现的时候容易使excel的读取代码与业务逻辑的处理代码参杂在一起,难以阅读和维护。所以就是个权衡,如果数据量不大的话,user model是首选,而数据量可能会增大到会产生内存压力的时候,event model则是种解决方案了。
三 excel2007的XML组成结构
    excel07就是一些XML文件的压缩包,可以将excel07的后缀改为zip,然后解压,可以信息地看到其XML组织结构。其中excel的主要信息都在文件夹xl下,其结构:
   folder xl
       comments1.xml(这是第一个sheet的comment信息)
       comments2.xml(这是第二个sheet的comment信息,如果还有其他sheet有comment信息的话,还有comments3.xml...)
       sharedStrings.xml(这是excel为减少文件大小所做的优化,excel所有的string值信息都存在此XML中,而
                         各个sheet具体的内容,如每个cell的值,都是会指向这个文件中的某个string值)
       styles.xml(这是excel里所有的格式信息)
       workbook.xml(这个XML可以得出excel所包含哪些sheet,都叫什么名字)
       folder worksheets
             sheet1.xml(这是第一个sheet的具体的值信息)
             sheet2.xml(这是第二个sheet的具体的值信息)
             sheet3.xml(这是第三个sheet的具体的值信息)
一般我们操作excel主要是读写sheet1.xml,sheet2.xml,sheet3.xml,因为我们最关注的信息都在这几个XML中,但读写具体值的时候,会指向sharedStrings.xml. 如,在某个sheet的某个cell值为“abc”,则在其对应的sheet.xml中会是<c t="s"><v>565</v></c>,c即表示cell,t表示type,"s"表示string,即值类型是个string,而565这个值则是指向sharedStrings.xml中索引为565对应的值,即“abc”.
其实这些都是微软定义excel结构的一些规则,了解下这个规则会对某些具体的代码实现(尤其是biggriddemo)会很有帮助,所以这里简单介绍了下。
  
具体的代码实现,可以参考已有的网上资源:
1.读 大数据量excel代码(event model)
    
http://gaosheng08.iteye.com/blog/624758
2.写 大数据量excel代码 (biggriddemo)
    
http://www.docjar.org/html/api/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java.html
3.POI user model&event model相关
    
http://poi.apache.org/spreadsheet/how-to.html

分享到:
评论

相关推荐

    【VBA(十五):使用ADO操作外部数据】【连接Excel数据源+常用SQL语句+连接ACCESS数据+小结】

    上一篇:【VBA(十四):VBA...文章目录使用ADO连接外部Excel数据源常用SQL语句抓取数据多表合并其他使用ADO连接ACCESS数据库小结概念 使用ADO连接外部Excel数据源 原数据 原创文章 131获赞 220访问量 2万+ 关注 私信

    Excel VBA 高效办公从入门到精通 何非 源代码

    本书各章最后两节均为小结和习题,以加深学习效果。 作者简介 本书目录 1 初识Excel VBA 2 VBA程序设计基础 3 VBA过程和对象 4 利用VBA进行单元格操作 5 利用VBA进行工作表操作 6 工作表界面 7 利用VBA...

    如何做数据分析.pptx

    小结:数据分析那些事儿 数据分析是"神马"。 数据分析六部曲。 常用指标或术语。 ——提取信息、形成结论,对数据加以详细研究和概括总结的过程 我们已经初步了解数据分析的过程和执行步骤,接下来就要深入了解具体...

    国家社科基金项目数据库-2022-3-27.xlsx

    包括里面的所有项目资源信息,如果不懂软件分析的小伙伴,直接在Excel里面也可以进行筛选和数据分析哟,数据量约110000条左右。 3、数据量较大,可以推荐做数据分析的案例和模板,Hadoop也可练练手哟,资源信息非常...

    python数据分析随书代码

    1.10 小结 15 第 2章 NumPy数组 16 2.1 NumPy数组对象 16 2.2 创建多维数组 18 2.3 选择NumPy数组元素 18 2.4 NumPy的数值类型 19 2.4.1 数据类型对象 21 2.4.2 字符码 21 2.4.3 Dtype构造函数 22 2.4.4 ...

    高性能动态SQL Oracle数据安全 Oracle 数据库的聚簇技术 等等

    目录 全面认识Oracle数据库 1 ...用SQL*Loader将Excel数据导出到Oracle 94 Oracle Spatial数据加密问题的研究 95 提高Oracle数据库系统Import的性能 96 Oracle数据库的四种启动方式 97 oracle数据库优化基础 97

    电子表格排数据教学设计.docx

    课堂小结: 如果需要对表格中的数据进行大量的计算,应用Word就不方便了。由此沃姆今天学了学习新的软件? 板书设计 电子表格排数据 Xls 单元格、工作表、工作簿 工具栏 编辑栏 状态栏 常用 格式 教学反思 ________...

    浅谈数据分析.pdf

    确定数据分析思路 构建你的分析框架,用一定的逻辑框架将大问 题拆成小问题,无框架不成体系 使用数据分析方法论 11 方法论 说明 使用范围 PEST Political, Economic, Social, Technological 行业分析 4P Product, ...

    spring in action英文版

    第一部分 Spring基础  第1章 开始Spring之旅  1.1 为什么使用Spring  1.1.1 J2EE开发者的一天  1.1.2 Spring的承诺  1.2 Spring是什么 ... 1.6.2 关于其他轻量级容器 ... 11.6 小结

    大数据的国内外研究现状与发展动态分析报告.doc

    此时企业内部生产数据的已不仅是企业的财务人员,还包括大量的办公人员,这极大 地促进了数据量的增长。互联网的兴起则促成了数据量的第三次大规模增长,在互联网 的时代,几乎全民都在制造数据。而与此同时,数据的...

    常用上市公司债务融资成本DebtCost指标计算Stata代码(附2001-2021年数据)

    债务融资成本 计算方法 Cost1: 企业财务费用占期末总负债的比重 Cost2 : 企业利息支出加上手续费支出和其他财务费用的总额占期末总负债的比重 ...各年数据量 描述性统计 相关性分析 结 果截图 附件下载

    ASP.NET3.5典型模块开发源代码

    26.3 使用OWC组件生成Excel数据表 352 26.4 小结 353 第27章 Pet Shop 4.0架构分析模块 354 27.1 Pet Shop概述 354 27.1.1 Pet Shop的发展 354 27.1.2 Pet Shop 4.0的安装前提条件 355 27.1.3 Pet Shop...

    Visual C# 2005数据库通用模块开发与系统移植 配书目录及代码,这样看代码就方便了

     1.4 本章小结 第2章 C#与数据库访问技术  2.1 ADO.NET概述  2.2 Connection对象与数据库连接  2.3 Command对象与查询语句  2.4 DataReader对象与数据获取  2.5 DataAdapter对象  2.6 DataSet对象  2.7 ADO...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    1.6 小结 62 第2章 对象和visual basic 63 2.1 面向对象的术语 64 2.1.1 对象、类和实例 64 2.1.2 对象的组成 65 2.1.3 system.object 68 2.2 使用visual basic类型 68 2.2.1 值类型和引用类型 69 ...

    2021 年高教社杯全国大学生数学建模竞赛题 B 题 乙醇偶合制备 C4 烯烃

    在制备过程中,催化剂组合(即:Co 负载量、Co/SiO2 和 HAP 装料比、乙醇浓度 的组合)与温度对 C4 烯烃的选择性和 C4 烯烃收率将产生影响(名词解释见附录)。 因此通过对催化剂组合设计,探索乙醇催化偶合制备 C4 ...

    PROJECT 2007宝典 9/9

     1.3 小结   第2章 熟悉Microsoft Project环境   2.1 初识Project   2.1.1 启动项目   2.1.2 输入信息   2.1.3 更改视图   2.2 Project 2007中的新增功能   2.3 小结  第2部分 推进项目  ...

    PROJECT 2007宝典 7/9

     1.3 小结   第2章 熟悉Microsoft Project环境   2.1 初识Project   2.1.1 启动项目   2.1.2 输入信息   2.1.3 更改视图   2.2 Project 2007中的新增功能   2.3 小结  第2部分 推进项目  ...

    PROJECT 2007宝典 1/10

     1.3 小结   第2章 熟悉Microsoft Project环境   2.1 初识Project   2.1.1 启动项目   2.1.2 输入信息   2.1.3 更改视图   2.2 Project 2007中的新增功能   2.3 小结  第2部分 推进项目  ...

Global site tag (gtag.js) - Google Analytics