sphinx-excel 简介
Sphinx 插入表格有几种方式, 这几种方式都不令人满意.
grid-table
, 表达能力很强, 但是绘制起来很麻烦, 需要专门的编辑器插件辅助完成, 修改起来也不方便.list-table
, 没办法实现单元格合并, 也不支持环境嵌套.csv-table
, 可以从 CSV 文件渲染表格, 非常方便, 但是也不支持单元格合并以及环境嵌套.
因此我开发了 sphinx-excel, 可以非常方便的将 excel 文件渲染在 Sphinx 页面中, 并且支持单元格合并以及环境嵌套.
sphinx-excel 安装
可以使用 Bash 1 中命令安装 sphinx-excel.
$ python3 -m pip install sphinx-excel
sphinx-excel 使用
Hint
点此下载
本文当中使用的 excel 文件.
首先在 conf.py
文件中添加如下配置.
extensions = [
'sphinxcontrib.excel',
]
然后就可以使用 excel
命令来渲染 excel 表格了, 如 Listing 1 的结果如 Table 1 所示.
.. excel:: ./tables.xlsx
序号 |
姓名 |
年龄 |
性别 |
---|---|---|---|
1 |
张三 |
23 |
男 |
2 |
李四 |
24 |
男 |
3 |
王二麻子 |
25 |
男 |
4 |
罗老师 |
26 |
男 |
excel
默认会渲染指定 excel 中的第一个 sheet, 并会把第一个 sheet 的名称显示在表格的标题, 如果你不想显示标题, 可以使用 :no-caption
参数, 如 Listing 2 所示.
.. excel:: ./tables.xlsx
:no-caption:
序号 |
姓名 |
年龄 |
性别 |
---|---|---|---|
1 |
张三 |
23 |
男 |
2 |
李四 |
24 |
男 |
3 |
王二麻子 |
25 |
男 |
4 |
罗老师 |
26 |
男 |
如果想使用其他标题, 可以使用 :caption:
参数指定标题, 如 Listing 3 所示.
.. excel:: ./tables.xlsx
:caption: 优秀员工
序号 |
姓名 |
年龄 |
性别 |
---|---|---|---|
1 |
张三 |
23 |
男 |
2 |
李四 |
24 |
男 |
3 |
王二麻子 |
25 |
男 |
4 |
罗老师 |
26 |
男 |
excel
兼容 Sphinx 内置 table
命令的所有参数, 比如, 可以使用 :align:
使表格居中显示, 如 Listing 4 所示.
.. excel:: ./tables.xlsx
:align: center
序号 |
姓名 |
年龄 |
性别 |
---|---|---|---|
1 |
张三 |
23 |
男 |
2 |
李四 |
24 |
男 |
3 |
王二麻子 |
25 |
男 |
4 |
罗老师 |
26 |
男 |
如果一个 excel 中有多个 sheet, 可以使用 :sheet:
参数来指定渲染哪个 sheet, 如 Listing 5 所示.
.. excel:: ./tables.xlsx
:align: center
:sheet: 员工信息
序号 |
姓名 |
年龄 |
性别 |
---|---|---|---|
1 |
张三 |
23 |
男 |
2 |
李四 |
24 |
男 |
3 |
王二麻子 |
25 |
男 |
4 |
罗老师 |
26 |
男 |
值得注意的是, excel
默认会将第一行加粗, 表示该行是表头, 如果表头行数不为 1, 需要使用 :headers:
参数指定, 如 Listing 6 所示.
.. excel:: ./tables.xlsx
:align: center
:sheet: 复杂表头
:headers: 2
序号 |
起始点 |
终点 |
||
---|---|---|---|---|
\(x\) |
\(y\) |
\(x\) |
\(y\) |
|
1 |
1 |
3 |
1 |
3 |
2 |
2 |
4 |
1 |
3 |
3 |
3 |
5 |
1 |
3 |
4 |
4 |
6 |
1 |
3 |
5 |
5 |
7 |
1 |
3 |
excel
命令支持合并单元格的渲染, 并且支持环境嵌套, 如 Listing 7 所示, 其渲染结果如 Table 6 所示.
.. excel:: ./tables.xlsx
:align: center
:sheet: 合并单元格
:headers: 0
def add(x, y):
"""
return sum of x + y
"""
return x + y
|
点击 Enter 按键 |
显示如右所示列表 |
|
他说 苟利国家生死以, 岂因祸福避趋之. |
|||
\(\frac{1}{1^2} + \frac{1}{2^2} + \frac{1}{3^2} + \frac{1}{4^2} + \frac{1}{5^2} + \frac{1}{6^2} + \frac{1}{7^2} + \cdots = \sum_{i=1}^\infty \frac{1}{i^2} = \frac{\pi}{6}\) |
从 Table 6 中可以看出表格里可以有任何命令, 可以有代码块, 可以有 :admonition:
, 可以有列表, 也可以有公式. 甚至, 代码块是可以被引用的, 如 Listing 8 所示.