No project description provided
Project description
\n
导出命令
- 安装python,推荐3.8.10
- 安装easyxl,命令行运行:python -m pip install easyxl
- 按照后述格式填写好excel表格后,命令行运行:python -m easyxl /path/to/your/excel/file/
- 输出结果在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
- 添加:根据cmd表单,形成任务列表的功能
- 添加:获取Sheet信息
- 添加:#注释掉列的功能
- 添加:#注释掉行的功能
- 添加:忽略空单元格的功能
- 添加:将Id列转化为列表头,增加差异化列表头功能
- 增强:Header垂直到尾的判断能力
- 添加:parse单元格内Json字符串的功能
- 添加:根据表头的类型标注转换单元格value的功能
- 添加:将多个相同ID表头的行合并伪一个list的功能
- 添加:OneFilePerId的功能
- 添加:命令行读取参数,处理Excel文件的功能
- 打包发布到Pypi
- 增加不同层级的remove_empty的功能:全空的字典、值为空的key、全空的list、值为空的list item
- 将单元格里的json结构化为UnifiedData,减少递归判断的复杂程度,也方便做remove_empty
- 增加数据校验的功能
- 增加数据导出为类的功能
- 考虑把表头的分隔符变更为,
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
easyxl-1.0.16.tar.gz
(14.6 kB
view hashes)
Built Distribution
easyxl-1.0.16-py3-none-any.whl
(12.6 kB
view hashes)