Skip to main content

No project description provided

Project 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

  • 添加:根据cmd表单,形成任务列表的功能
  • 添加:获取Sheet信息
  • 添加:#注释掉列的功能
  • 添加:#注释掉行的功能
  • 添加:忽略空单元格的功能
  • 添加:将Id列转化为列表头,增加差异化列表头功能
  • 增强:Header垂直到尾的判断能力
  • 添加:parse单元格内Json字符串的功能
  • 添加:根据表头的类型标注转换单元格value的功能
  • 添加:将多个相同ID表头的行合并伪一个list的功能
  • 添加:OneFilePerId的功能
  • 添加:命令行读取参数,处理Excel文件的功能
  • 打包发布到Pypi
  • 增加不同层级的remove_empty的功能:RmEmptyDictItem、RmEmptyListItem
  • 将单元格里的json结构化为UnifiedData,减少递归判断的复杂程度,也方便做remove_empty
  • 增加数据校验的功能
  • 增加数据导出为类的功能

Project details


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.18.tar.gz (14.9 kB view hashes)

Uploaded Source

Built Distribution

easyxl-1.0.18-py3-none-any.whl (12.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page