Metadata-Version: 2.1
Name: easyxl
Version: 1.0.17
Summary: UNKNOWN
Home-page: https://github.com/leeheisen/easyxl
Author: leeheisen
License: UNKNOWN
Description: \n
        ## 导出命令
        1. 安装python，推荐3.8.10
        2. 安装easyxl，命令行运行：python -m pip install easyxl
        3. 按照后述格式填写好excel表格后，命令行运行：python -m easyxl /path/to/your/excel/file/
        4. 输出结果在excel文件同级目录下与excel文件同名的文件夹里
        
        ## 填表说明
        ### cmd表单
        * cmd是管理导出任务的默认表单
        * 保证第一行和第一列没有被空单元格间断（合并单元格里的所有单元格都是非空）
            * 第一列：h标明表头的范围
            * *标明要输出的内容
            * #注释掉不需要输出的内容
        * 表头说明：
            * Task：任务标记
            * SheetName：任务所对应的表单名称
            * Export：是否执行导出
            * OneFilePerId：是否按照第一层的Id，按照Id导出单独的数据文件
        
        ### 待导出表单
        * **分隔符与信息记号：**
            * "-"是默认的分隔符
            * 名称、第一行/列的h/id标记、强制转换数值类型、数据结构、null记号等信息记号，都需要用"-"分隔
                * 名称：
                    * 用分隔符分割单元格的数据后，第一个会被作为单元格的名称。如果是"-AB-EF"的结构，第一个值是""，单元格名称会被设置为None
                * h/id标记：
                    * h，在第一列标记所有表头所在的行
                    * id，在第一行标记所有ID所在的列
                * 强制转换数值类型：支持的类型包括int、float、str、bool
                * 数据结构：dict、list
                * null记号：
                    * none或null都可以，不区分大小写
                    * 放置了null记号的单元格，会被当做空单元格处理
        * **Id与Header**
          
            * 支持多列的Id嵌套，支持多行的Header嵌套
            * 支持定义数据结构：dict与list。实现方式：在对应的单元格添加分隔符与对应类型（dict、list）
            * 支持注释：如果在某个单元格前添加#，则该单元格对应的行或列不会被导出
            * **合并多行多列数据**
                * 方法1：合并涉及的单元格
                * 方法2：第一个单元格正常书写，剩余单元格留空
                * 方法3：所有单元格都填写内容
                    * 需保证拆分后的name都一样。添加#不影响对name的判断。
                    * 只有第一个单元格的#能够起到注释的作用。
                * 合并多行或多列的一个注意项：
                    * 如果是Id的末列或者Header的末行，一个Id对应多行，或者一个Header对应多列，则对应的行列数据都会被放到一个list里，无论定义的这个Id或Header的数据结构是list还是dict。之所以这么做，是因为没有下一列或下一行提供字典的key。
        * **Content区：**
          
            * Header末行以下、Id末列以右的区域
            * 支持单元格内填写**Json5**格式数据
        
        
        ### 其他
        * 重复Id处理：后边覆盖前边
        * 空表头处理：
            * 如果数据向上追溯碰到的第一个非空表头是list，则该数据会被放到对应的list里
            * 如果数据向上追溯碰到的第一个非空表头是dict，则该数据会被放到{None:}里。注意：多个空表头会导致只有最后一个表头对应的数据被放到{None:}里
        * 把数据按第一个Id列表输出（只适用于不是OneFilePerId的情形）：
            * 方法1：在(1, 1)输入{abcd:[]}（abcd可以用其他字母替换），脚本会以该格式作为包裹，将id列的值放到列表里；id列的键会被略去，因为外层是一个list。
            * :方法2：在Id列左侧再插入一个辅助列，作为一个包裹结构。比如data-list，具体格式参见**合并多行多列数据**的3个方法之一
        * 对于字母和数字拼接的Id，使用"_"拼接，会默认把Id拆分后进行排序
        * 将json转换为C#的数据结构：https://json2csharp.com/ 
        
        
        ## TODO
        - [x] 添加：根据cmd表单，形成任务列表的功能
        - [x] 添加：获取Sheet信息
        - [x] 添加：#注释掉列的功能
        - [x] 添加：#注释掉行的功能
        - [x] 添加：忽略空单元格的功能
        - [x] 添加：将Id列转化为列表头，增加差异化列表头功能
        - [x] 增强：Header垂直到尾的判断能力
        - [x] 添加：parse单元格内Json字符串的功能
        - [x] 添加：根据表头的类型标注转换单元格value的功能
        - [x] 添加：将多个相同ID表头的行合并伪一个list的功能
        - [x] 添加：OneFilePerId的功能
        - [x] 添加：命令行读取参数，处理Excel文件的功能
        - [x] 打包发布到Pypi
        - [x] 增加不同层级的remove_empty的功能：RmEmptyDictItem、RmEmptyListItem
        - [x] 将单元格里的json结构化为UnifiedData，减少递归判断的复杂程度，也方便做remove_empty
        - [ ] 增加数据校验的功能
        - [ ] 增加数据导出为类的功能
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
