Skip to main content

ExcelAlchemy, a Python library for reading and writing Excel files.

Project description

ExcelAlchemy 开发指南

1. 项目介绍

  • ExcelAlchemy 负责从 Excel 解析用户的输入,转换、生成对应的数据结构,给后端使用。
  • ExcelAlchemy 负责将数据验证的
  • ExcelAlchemy 负责将后端给定的数据,转换、生成对应的 Excel,给用户下载。

2. 核心设计

2.1 ABCValueType

负责实现表头的渲染,用户输入值的解析,反向解析,数据验证。

  • comment: 用于生成表头的注释
  • serialize: 将用户输入在 Excel 的值,转换为 Python 的值。需要注意的类型如时间。
  • deserialize: 将 Python 的值,转换为 Excel 的值。如 datatime 转换成 str 类型。
  • _validate: 私有方法,对数据进行验证,OptionId/name 的转换逻辑在这里完成。

2.2 Writer 文件

负责将捕获到的错误正确的填写到 Excel 的单元表格(cell)中,核心是计算单元格横纵坐标。 注意以下两点即可

  • pandas 的横纵坐标从 0 开始,而 openpyxl 的横纵坐标从 1 开始。
  • 对于合并的单元格,合并之后,无法再写入值,无法再写入格式,因此一定要先写入值和格式,再合并单元格(对于合并的单元格,本质上值在左上角第一个)。

2.3 如何捕捉中文错误

pydantic 支持自定义 validate 函数, 通过不同的 ValueType 实现不同的 validate 函数,从而捕捉不同的错误。

2.4 FieldMetaInfo

  • 用于描述 Excel 的表头,包括表头的名称,表头的类型,表头的注释,后续很多地方,都会用到这个类。

3、重难点解释

3.1 如何解析表头是否有合并

这是通过观察 pandas 读取 Excel 时的行为,而得出的结论。

对于有合并的表头,pandas 会将合并的单元格的值,赋值给合并的单元格的第一个单元格,而其他的单元格的值为 None。 因此,我们可以通过判断是否为 None 来判断是否有合并。

3.2 如何记录错误

ExcelCellErrorExcelRowError 用于记录错误,其中 ExcelCellError 记录单元格错误,ExcelRowError 记录行错误。 ExcelAlchemy.cell_errors 用于记录单元格错误的横纵坐标信息。 ExcelAlchemy.row_errors 用于记录单元格错误的横坐标信息。

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

ExcelAlchemy-0.1a2.tar.gz (42.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

excelalchemy-0.1a2-py3-none-any.whl (55.6 kB view details)

Uploaded Python 3

File details

Details for the file ExcelAlchemy-0.1a2.tar.gz.

File metadata

  • Download URL: ExcelAlchemy-0.1a2.tar.gz
  • Upload date:
  • Size: 42.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.2

File hashes

Hashes for ExcelAlchemy-0.1a2.tar.gz
Algorithm Hash digest
SHA256 6025b9fff8b5dde320ad5091b90f9e6391a2df8ce50f7a9beab92cbc1981422f
MD5 4cddcb63b45d520df7dd956780eb5035
BLAKE2b-256 7c1111145a4128f6ebf879542f14869684f0b4b0d89aef9b20a09a451e9037f7

See more details on using hashes here.

File details

Details for the file excelalchemy-0.1a2-py3-none-any.whl.

File metadata

  • Download URL: excelalchemy-0.1a2-py3-none-any.whl
  • Upload date:
  • Size: 55.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.2

File hashes

Hashes for excelalchemy-0.1a2-py3-none-any.whl
Algorithm Hash digest
SHA256 b475829628306ca3b387214efe2d264f6d8e6c4d89d9b1c0e7557a539fdf06ca
MD5 f8a89827edbf048d2f0d60c9c21bbf4a
BLAKE2b-256 68e11a174e2e63c0a761feec32422503e61bc3ce392d1ba0a09b2952097652bc

See more details on using hashes here.

Supported by

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