sphinxcontrib-xlsxtable
SphinxでExcelファイルから表 (テーブル) を埋め込むSphinx拡張を作りました。
機能的に不十分だったり、Pythonモジュールよくわかってなかったり、PyPIの理解も不十分だったりしますが、まあ、動いとる。
以下が特徴で、これはそのまま自分が必要とした機能であり、既存の拡張機能が肌に合わなかった理由になります。
使い方
pip
で入れて、
$ pip install sphinxcontrib-xlsxtable
conf.py
に設定します。
# conf.py extensions = [ 'sphinxcontrib.xlsxtable', ]
reStructuredTextのディレクティブは次の通りです。現状はほとんどオプションはありませんが、いくらか追加予定です。
ドキュメント化していませんが、一応シート指定にも対応してます。
.. xlsx-table:: Table Caption :file: path/to/xlsx/file.xlsx :header-rows: 1 :sheet: Sheet
これによって、以下のExcelファイルから、
以下の結果が得られます。
セル内の文字列はそのままreSTとして処理されるので、上記の通り「- テキスト」形式で書かれた部分は、箇条書きとして処理されています。
内部でGrid Table文字列を生成
仕組みとしては、OpenPyXL
でExcelファイルを解析して、内部でreSTのGrid Tableの文字列を作っています。
上記のExcelファイルだと、以下のような感じ。
+----+-------+-----------+--------+ | A1 | B1 | C1 | D1 | +====+=======+===========+========+ | A2 | B2:B3 | C2 | D2 | +----+ +-----------+--------+ | A3 | | 日本語 | +----+-------+-----------+--------+ | A4 | B4 | C4 | - D4-1 | | | | | - D4-2 | +----+-------+-----------+--------+
作った文字列はそのままdocutils
標準の解析器 / 生成器に渡しているだけ (のつもり) なので、結合セル、セル内のreST表記に対応し、標準の表のスタイルで表示することを実現しています。
Sphinx / reStructuredTextの表について
元々はSphinxで結合セルの表記をするならExcelから読み込みたい...というので作ったのだけど、使ってみたところ思いの外便利でした。