# mofum-msdom **Repository Path**: mofum/mofum-msdom ## Basic Information - **Project Name**: mofum-msdom - **Description**: Microsoft 文档操作工具类。对Excel的操作采用SAX事件模式,用极低的内存消耗来完成大量数据的快速导入导出,有效避免大量数据导入导出产生的内存溢出(OutOfMemory)问题;并且拥有相对完善的注解功能和相对灵活的导入导出配置,以适应一些较为复杂的业务需求。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 101 - **Forks**: 20 - **Created**: 2018-11-22 - **Last Updated**: 2025-08-04 ## Categories & Tags **Categories**: excel-utils **Tags**: None ## README # mofum-msdom #### 项目介绍 Microsoft 文档操作工具类... 本工具类基于Apache POI 4.0 SAX 用户模式实现。 操作简单但是不失灵活性。基于Sax模式实现,消耗内存相对较少,有效避免OOM(OutOfMemoryError)内存溢错误。 读取原理:读数据是基于事件模式,读一条数据,释放一条数据,整个解析过程只占用一条数据解析的内存。 写入原理:写数据则是将部分数据放入内存中,msdom-excel称这样的操作叫做缓存,超过缓存的写入数据部分则根据时间先后存于硬盘上。 Excel部分: 愿景:简单、高效、自由、轻松是我们要达成的项目目标。 简单:使用简单,无需深度学习,开箱即用。 高效:无需担心性能、担心数据量过大等技术问题,而专心于业务需求开发。 自由:灵活的配置,你可以修改每一处你能想象到的地方。我们不会限制死,但是我们会提供一套默认的方案给你。当方案不满足你的需求。你完 全可以自己重新定义一套方案。 轻松:我们希望你在使用mofum-msdom时是感到快乐和轻松的。 #### MAVEN安装方式 ``` com.mofum.msdom mofum-msdom 1.0.2.3 ``` #### 1.0.2.3版本功能概要 - 目前仅支持XLSX(Excel 2007)版本的Excel导入导出。暂不支持CVS,XLS相关的格式。 - 支持必要参数非空校验 required - 支持过滤器读取(DataFilter) - 支持自定义验证器(Validator) - 支持文件(File)读取模式。 - 支持分页写入模式 (PageAnnotationExcelWriterImpl) - 支持注解写入模式(AnnotationExcelWriterImpl) - 支持多类型混合追加写入模式(MultiAnnotationExcelWriterImpl) - 支持自定义Excel类型转换(ExcelConvert) - 支持追加写入,多Sheet 混合写入模式。 - 支持合并单元格。 - 支持较多的样式 - 支持导出的数据的格式化 #### 1.0.3.0新版本功能预览 - 支持流读取模式(√) - 支持模板导出并且同时支持模板的反序列化成对象(-) - 支持模板注解相关配置(-) - 支持初始化默认的Excel配置DataFilter,Validator,ExcelConvert,TypeConvert(√)【默认配置为全局配置,仅提供初始化功能】(该功能,你将可以根据你的业务需求来统一配置JAVA类型转换器,Excel类型转换器,验证器,过滤器。当然你仍然可以使用默认的相关配置和字段上配置的转换器,它们并不相互冲突。) (注:“√” 表示已完成,“-”表示正在开发中。) #### 测试 ##### 1、Excel 测试说明 测试示例 见com.mofum.msdom.excel.demo 目录 ##### 读取测试:(ReadDemo) JDK 版本: 1.8 系统版本: Windows 7 测试JVM : -Xms1m -Xmx5m 测试数据 :100万条数据(20列)见附件(sxxf1.xlsx) 最低JVM内存需求:5M ##### 写入测试:(WriteDemo) JDK 版本: 1.8 系统版本: Windows 7 测试JVM : -Xms1m -Xmx5m 最低JVM内存需求:5M #### 软件架构 基于POI 4.0 开发的 excel 导入导出工具类 #### 使用教程 ##### 1.读取操作: ``` /** * 读取测试模型 */ public class ReadDemo { public static void main(String[] args) throws IOException { //创建Reader ,对Test模型进行解析 IExcelReader reader = new AnnotationExcelReaderImpl(); //POI 读取Excel 文件 reader.read(new File("001.xlsx"), TestModel.class, new TestModelCallback()); } } ``` [详细操作见WIKI文档](https://gitee.com/mofum/mofum-msdom/wikis/%E5%BF%AB%E9%80%9F%E4%BD%BF%E7%94%A8?sort_id=1053563) ##### 2.写入操作 ``` public class WriteDemo { public static void main(String[] args) throws IOException { //数据写入器 IExcelWriter writer = new AnnotationExcelWriterImpl(); //写入数据 writer.dataType(TestModel.class).start(out).write(datas).end(); } } ``` [详细操作见WIKI文档](https://gitee.com/mofum/mofum-msdom/wikis/%E5%BF%AB%E9%80%9F%E4%BD%BF%E7%94%A8?sort_id=1053575)