# MySheet **Repository Path**: carbon-studio/mysheet ## Basic Information - **Project Name**: MySheet - **Description**: 一种针对于多数据维度、复杂样式布局和频繁需求变更而设计的电子表格导入导出中间件。主要应用在MES、ERP、OA等系统的数据文件导出上。该库使用分治设计,并且通过精简接口,链式编程以及策略模式等简化电子表格的数据录入,映射规则,样式处理以及合并操作。为复杂型电子表格操作提供了一种解决方案。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2025-08-23 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: excel-utils **Tags**: POI, Excel, SpringBoot ## README
现在每个DIV都有能力构建自己的表,那么接下来开始设计它们之间的关系,作为一个树形数据结构,从父DIV创建子DIV是必要的,MySheet规范需要设计create方法,该方法自动将创建好的子DIV挂载到自己的子DIV列表中,并返回这个对象的引用供外部使用。
树可以递归遍历每一个节点直至找到对应名称的DIV,调用它的create方法,这就是找到指定名称的DIV并从其下创建子DIV块。
这么做还有另外一个最重要的因素,就是可复用的特点;即使在复杂的表,有很多可复用的子结构,以下面几个复杂表示例:

它们都有很多重复相似的子结构,和排列方式,因此将他们抽象出来很有必要。
DIV的父子关系可以概括为父表与子表,它们有一个特征:**当父表移动N个单位时,子表及其下所有子表也移动N个单位**。MySheet使用偏移量来记录块与块之间平移的记录,并在块生成的时候使用这个偏移量来偏移。

偏移量可以在用户操作偏移时累加,无需每次偏移都全部作用到每个数据和样式上。此外还需要注意,**当选中一个DIV偏移时,仅有它及其下的所有子DIV偏移,而非包含父节点偏移。**只有这样才能保证N叉树设计布局合理,下方示图以红色表示选中偏移的节点,橙色表示全部需要更新偏移的节点来理解这一点。

教程参考:[📖 Exporter参考文档](./参考文档.md)
#### 如何部署到本地?
可从Intellij IDEA中创建项目,选择Project form Version Control,填写Git仓库地址:
https://gitee.com/carbon-studio/apache-poi-export