Skip to main content

Convert your CSV files into Markdown tables.

Project description

csvtomd: markdown tables made easy
==================================

.. figure:: http://mplewis.com/files/csvtomd.png?
:alt: Excel —> Markdown

Excel —> Markdown
|CircleCI|

Convert your CSV files into Markdown tables.

`Tables Generator <http://www.tablesgenerator.com/markdown_tables>`__ is
a fantastic web tool for converting tabular data into all sorts of table
layouts. I like how it lets me import CSV files, but I need the ability
to convert many CSV files in batch for a docset on which I'm working.

I built ``csvtomd`` to convert one or more CSV files into nicely-padded
Markdown tables. Now you can build your tables in Excel and convert them
for use in GitHub, Bitbucket, or `Mou <http://mouapp.com/>`__ Markdown
files without having to construct them by hand.

Installation
============

This is a Python 3 script, so use ``pip3`` to install:

::

pip3 install csvtomd

After this, run ``csvtomd --help`` from your terminal to verify it's
installed properly.

Usage
=====

``csvtomd MY_SPREADSHEET.csv`` generates a Markdown table from
``MY_SPREADSHEET.csv``.

``csvtomd SHEET1.csv SHEET2.csv SHEET3.csv`` generates three Markdown
tables from the input files and displays them alongside the input
filename.

``csvtomd`` or ``csvtomd -`` generates a Markdown table from standard
input. You can type CSV data or pipe a file in.

Example Input
-------------

File: ``thrones.csv``

::

First Name,Last Name,Location,Allegiance
Mance,Rayder,North of the Wall,Wildlings
Margaery,Tyrell,The Reach,House Tyrell
Danerys,Targaryen,Meereen,House Targaryen
Tyrion,Lannister,King's Landing,House Lannister

Example Markdown Table
----------------------

Command: ``csvtomd thrones.csv``

+--------------+-------------+---------------------+-------------------+
| First Name | Last Name | Location | Allegiance |
+==============+=============+=====================+===================+
| Mance | Rayder | North of the Wall | Wildlings |
+--------------+-------------+---------------------+-------------------+
| Margaery | Tyrell | The Reach | House Tyrell |
+--------------+-------------+---------------------+-------------------+
| Danerys | Targaryen | Meereen | House Targaryen |
+--------------+-------------+---------------------+-------------------+
| Tyrion | Lannister | King's Landing | House Lannister |
+--------------+-------------+---------------------+-------------------+

Example Raw Output
------------------

Command: ``csvtomd thrones.csv``

::

First Name | Last Name | Location | Allegiance
------------|-------------|---------------------|-----------------
Mance | Rayder | North of the Wall | Wildlings
Margaery | Tyrell | The Reach | House Tyrell
Danerys | Targaryen | Meereen | House Targaryen
Tyrion | Lannister | King's Landing | House Lannister

Command: ``csvtomd --padding 0 thrones.csv``

::

First Name|Last Name|Location |Allegiance
----------|---------|-----------------|---------------
Mance |Rayder |North of the Wall|Wildlings
Margaery |Tyrell |The Reach |House Tyrell
Danerys |Targaryen|Meereen |House Targaryen
Tyrion |Lannister|King's Landing |House Lannister

Requirements
------------

Python 3.

Tested with Python 3.4.1 on Mac OS X 10.9.3.

Doesn't require any external packages, so it should be
platform-agnostic.

Help
----

Command: ``csvtomd --help``

::

usage: csvtomd.py [-h] [-n] [-p PADDING] [-d DELIMITER] csv_file [csv_file ...]

Read one or more CSV files and output their contents in the form of Markdown
tables.

positional arguments:
csv_file One or more CSV files to be converted

optional arguments:
-h, --help show this help message and exit
-n, --no-filenames Don't display filenames when outputting multiple
Markdown tables.
-p PADDING, --padding PADDING
The number of spaces to add between table cells and
column dividers. Default is 2 spaces.
-d DELIMITER, --delimiter DELIMITER
CSV delimiter, expected values: ',', ';'. Default is ,

Contributions
=============

Bug reports, fixes, or features? Feel free to open an issue or pull
request any time.

Testing
-------

I only accept pull requests for features with tests.

.. code:: sh

# Run tests in the project root
$ py.test
============================= test session starts ==============================
platform darwin -- Python 3.5.0, pytest-3.0.5, py-1.4.31, pluggy-0.4.0
rootdir: /your/path/to/csvtomd, inifile:
collected 3 items

test/test_csvtomd.py ...

=========================== 3 passed in 0.04 seconds ===========================

Releasing
---------

.. code:: sh

# Bump version number in setup.py and csvtomd.py
# Delete old builds
rm -rf dist
# Build source and binary wheel distribution
python setup_wrap.py sdist bdist_wheel
# Upload to PyPI
pip install twine
twine upload dist/*

`Here's an actual guide to
PyPI. <https://packaging.python.org/distributing/>`__ `And another
really good
one. <https://hynek.me/articles/sharing-your-labor-of-love-pypi-quick-and-dirty/>`__

License
=======

Copyright (c) 2016 Matthew Lewis. Licensed under `the MIT
License <http://opensource.org/licenses/MIT>`__.

.. |CircleCI| image:: https://circleci.com/gh/mplewis/csvtomd.svg?style=svg
:target: https://circleci.com/gh/mplewis/csvtomd

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

csvtomd-0.3.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

csvtomd-0.3.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file csvtomd-0.3.0.tar.gz.

File metadata

  • Download URL: csvtomd-0.3.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for csvtomd-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a1fbf1db86d4b7b62a75dc259807719b2301ed01db5d1d7d9bb49c4a8858778b
MD5 7c0106e53488d026f66cfd8388288f8c
BLAKE2b-256 9d59ea3c8b102f9c72e5d276a169f7f343432213441c39a6eac7a8f444c66681

See more details on using hashes here.

File details

Details for the file csvtomd-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for csvtomd-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3ef90b54404dbe21c2b6e7b498f14664ef2360356ea9d7d644d32aff80bcd076
MD5 efb14e1a8dba25f171cee32c283dd57a
BLAKE2b-256 f95c3fe97f0507909529120c2d521f50fe64ccf8b0c11b4e7dc487c326c08a9b

See more details on using hashes here.

Supported by

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