kkAyatakaのメモ帳。

誰かの役に立つかもしれない備忘録。

sphinxcontrib-xlsxtableの画像対応

Excelファイルから表を作るSphinx拡張について、埋め込み画像に対応しました。

特にオプションなどは必要なく、画像が使用されたExcelファイルを指定すれば、そのまま画像が利用されます。

.. xlsx-table::
   :file: path/to/xlsx/embedded-images.xlsx

以下のようにレンダリングされます。

Embedded Images

内部処理

内部処理としては、以下のようにしています。

  • xlsxファイルを解析して、画像データを抜き出し、ファイルに保存
    • Ezcelファイル名.xlsx.mediaのフォルダを作成し、保存します
  • 画像アンカーの位置からセル (表の位置) を特定し、imageディレクティブを追加する

モジュール実行すると、以下のようになります。

% python -m sphinxcontrib.xlsxtable sample-images.xlsx --sheet v 
+-------+------------------------------------------------+
| Red   | .. image:: sample-images.xlsx.media/image1.png |
+-------+------------------------------------------------+
| Green | .. image:: sample-images.xlsx.media/image2.png |
+-------+------------------------------------------------+
| Blue  | .. image:: sample-images.xlsx.media/image3.png |
+-------+------------------------------------------------+

リンク