MkDocs plugin to directly insert tables from files into markdown.
Project description
mkdocs-table-reader-plugin
MkDocs plugin that adds a {{ read_csv('table.csv') }}
markdown tag to directly insert CSV files as a table into a page. See it in action at timvink.github.io/mkdocs-table-reader-plugin/.
This makes it easier to build reproducible reports. For more complex use cases, consider mknotebooks, mkdocs-markdownextradata-plugin or mkdocs-macros-plugin.
Setup
Install the plugin using pip3
:
pip3 install mkdocs-table-reader-plugin
Next, add the following lines to your mkdocs.yml
:
plugins:
- search
- table-reader
If you have no
plugins
entry in your config file yet, you'll likely also want to add thesearch
plugin. MkDocs enables it by default if there is noplugins
entry set.
Usage
In your markdown documents you can now use:
{{ read_csv('path_to_table.csv') }}
Where the path is relative to the location of your project's mkdocs.yml
file.
Under the hood this is basically:
import pandas as pd
df = pd.read_csv('path_to_table.csv')
df.to_markdown(index=False, tablefmt='pipe')
Which means you can pass all parameters of pandas.read_csv().
You can see an example usage in this repo (see mkdocs.yml
and docs/
) and the result at timvink.github.io/mkdocs-table-reader-plugin/.
Available readers
The following table reader functions are available:
{{ read_csv() }}
passed to pandas.read_csv().{{ read_table() }}
passed to pandas.read_table().{{ read_fwf() }}
passed to pandas.read_fwf().{{ read_excel() }}
passed to pandas.read_excel().{{ read_yaml() }}
is parsed with yaml.safe_load() and passed to pandas.json_normalize().
Reading xlsx files
You might get a XLRDError('Excel xlsx file; not supported',)
error when trying to read modern excel files. That's because xlrd
does not support .xlsx
files (stackoverflow post). Instead, install openpyxl and use:
{{ read_excel('tables/excel_table.xlsx', engine='openpyxl') }}
Reading yaml variables
mkdocs-markdownextradata-plugin is a great plugin to use when working with yaml files. It will read in all yaml files in a specified directory and make all keys available as jinja2 variables.
Options
You can customize the plugin by setting options in mkdocs.yml
. For example:
plugins:
- table-reader:
data_path: "docs"
data_path
Default is .
, which means you can specify the path to your table files relative to the location of your project's mkdocs.yml
file. If you use a folder for all your table files you can shorten the path specification by setting data_path
.
For example, if you set data_path
to docs/
in the project below, you will be able to use {{ read_csv("basic_table.csv") }}
instead of {{ read_csv("docs/basic_table.csv") }}
inside index.md
.
.
├── docs
│ ├── basic_table.csv
│ └── index.md
└── mkdocs.yml
Contributing
Contributions are very welcome! Please read CONTRIBUTING.md before putting in any work.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for mkdocs-table-reader-plugin-0.5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ef3f296199c8ac3c7f5be462801ba0e4a2606dc2d3c92ebc11f5b5af77103cd |
|
MD5 | 9f2ba30d68db1f4e76fdeebbdbca10b3 |
|
BLAKE2b-256 | 4fccf0289f79daa84f7a2bbcaaaa39553c7fd294a3be29f4027c24d4ec1eea81 |
Hashes for mkdocs_table_reader_plugin-0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 721d79615242e4c882bac4326258301b9aa496de9db3277a511e15f6a2899767 |
|
MD5 | b11001d29a4274d3f0f5548db5660221 |
|
BLAKE2b-256 | 2df1df9a52ebce59117ebd6cd8da49e084ecafe144e1def2d3ce7261da8ce057 |