本科毕业设计(论文)
题 目 基于数据报表处理系统的研究与实现
学院名称
专业名称
班 级
姓 名
学 号
指导教师
毕业时间
毕业 任务书
一、题目
基于数据报表处理系统的研究与实现
二、指导思想和目的要求
选题的来源:
在网站的开发工程实践中,员工管理是资源管理系统中的重要部分,分为入职,转正,调岗,离职等环节。掌握对数据库表的操作,理解员工管理的业务流程逻辑,实现基于事件驱动的报表导入导出等操作。
研究的内容方法与目标:
1.利用Apache POI提供的API,进行Microsoft Office的操作。其中Excel2007报表及其后续版本的核心结构是XML类型的压缩结构,占用空间小,操作效率高。实现POI结构中的XSSF,提供读写Microsoft Excel OOXML XLSX格式文档的功能。完成POI报表导入和导出功能。完成批量导入功能,页面端上传Excel表格,服务端解析表格获取数据,批量新增用户,并进行POI报表导出。
2. XSSF对象支持Excel2007以上版本,采用OOXML格式,这时Excel可以支持1048576条数据,单个sheet表就支持近百万条数据。但实际运行时还可能存在问题,原因是基于XSSFWork导出Excel报表,是通过将所有单元格对象保存到内存中,当所有的Excel单元格全部创建完成之后一次性写入到Excel并导出。当百万数据级别的Excel导出时,随着表格的不断创建,会导致内存溢出。实现POI提供的SXSSFWork对象,处理大数据量Excel报表的导出。
3.加载并读取海量的Excel时,是通过一次性的将所有数据加载到内存中再去解析每个单元格内容。当Excel数据量较大时,由于不同的运行环境可能会造成内存不足甚至OOM异常。采用事件模式的机制去处理,逐行扫描文档,一边扫描一边解析。由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。对于Excel2007实质是一种特殊的XML存储数据,使用基于SAX的方式解析XML完成Excel的读取。SAX逐行扫描文档,一边扫描一边解析。
4.使用JDK提供的Jvisualvm性能监控工具来监视程序的运行情况,包括CUP,垃圾回收,内存的分配和使用等情况,使程序的运行阶段变得可控。
三、主要技术指标
1.实现POI加载Excel功能,创建Workbook工作簿,创建表单Sheet,创建单元格样式对象CellStyle,设置边框,字体等,通过文件流写入文件。
2.基于XSSFWork导出海量Excel报表,随着表格的不断创建,会发生内存溢出。利用SXSSFWork对象处理大数据量Excel报表导出。实例化SXSSFWork对象,指定在内存中所产生的POI导出相关对象的数量,一旦内存中的对象的个数达到这个指定值时,就将内存中的这些对象的内容写入到磁盘中,将对象从内存中销毁,以后只要达到这个值,就会以类似的处理方式处理,直至导出完成。
3.海量数据报表的读取,要设置POI的事件模式,根据Excel获取文件流,根据文件流创建OPCPackage,创建XSSFReader。进行SAX解析,自定义Sheet处理器,创建SAX的XmlReader对象,设置Sheet的事件处理器,逐行读取。
4.利用Jvisualv进行性能对比测试,用户模式下读取测试Excel文件直接内存溢出,测试Excel文件映射到内存中还是占用了不少内存;而事件模式下可以流畅的运行。
四、进度和要求
第1周,课题调研、确定选题。
第2周,课题调研、确定选题。
第3周,课题调研、确定选题。
第4周,熟悉开发环境所需的知识,搭建开发环境。
第5周,实现POI加载Excel功能,创建workbook工作簿。
第6周,创建表单Sheet,创建单元格样式对象CellStyle。
第7周,实例化SXSSFWork对象,指定在内存中产生的POI导出对象的数量。
第8周,设置POI的事件模式。
第9周,根据文件流创建OPCPackage。
第10周,创建XSSFReader对象。
第11周,进行SAX解析,自定义Sheet处理器。
第12周,创建SAX的XmlReader对象。
第13周,创设置Sheet的事件处理器逐行读取。
第14周,利用Jvisualv进行性能对比测试。
第15周,总结优化。
第16周,答辩。
五、主要参考书及参考资料
[1]毛燠锋.基于报表和模板的报告生成方法研究[J].软件工程. 2021,24(05)
[2]张庆林.电子表格公式的逆向工程[D].广州:中山大学,2014.
[3]林杰.基于Web的教学科研信息系统的设计与实现[D].上海:复旦大学,2012.
[4]马杰.基于POI的Android阅读器设计与实现[J].电子技术与软件工程. 2013,(15)
[5]林雪南.基于Apache POI解析Excel文件及内存使用分析[J].电脑编程技巧与维护. 2016,(23) .
[6]丁俊.大数据时代下的动态可配置数据采集系统的研究与设计[J].计算机应用与软件. 2018,35(03)
[7]王晓东.Apache POI组件批量操作Excel文件的应用探索[J].金融科技时代 . 2019,(06).
[8]王峰.基于Apache Ftpserver的可自定义文件系统的文件服务器[J].软件 . 2020,(07).
[9]朱文君,黄国权.基于Java反射机制的POI实现Excel数据导入/导出[J].计算机时代.2015,(22).
[10] Microsoft Corp.Microsoft and Sourcesense Partner to Contribute to Open Source,
Apache POI to Support Ecma Office Open XML File Formats [J]. Computers, Networks & Communications,2008.
学生_________ 指导教师_________ 二级学院院长 ___________
(须本人手写签名)