From d9a449d256af64aa519b631c22f80f095224baec Mon Sep 17 00:00:00 2001 From: kennytm Date: Sat, 18 Feb 2017 22:10:33 +0800 Subject: [PATCH] License and Readme and update dependencies. --- README.md | 39 +++++++++++++++++++++++++++++++++++++++ ods2md.py | 20 +++++++++++++++++++- requirements.txt | 4 ++-- sample.png | Bin 0 -> 36752 bytes 4 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 README.md create mode 100644 sample.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..1c17d10 --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +ods2md +====== + +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + +Convert LibreOffice Calc Spreadsheets (*.ods) into Markdown tables + +![Sample output](sample.png) + +Install +------- + +1. Get Python 3. + +2. (Optional) Create a virtual environment. + + ```sh + python3 -m venv env + . env/bin/activate + ``` + +3. Install `ezodf` for parsing *.ods files + + ```sh + pip3 -r requirements.txt + ``` + +Usage +----- + +```sh +./ods2md.py input_file.ods > output_file.md +``` + +Limitations +----------- + +* This program disregards all formats. Currencies and percentages will be displayed as plain numbers. +* Merged cells are not supported, the content will be shown at the first cell (this is actually a limitation of GFM table) diff --git a/ods2md.py b/ods2md.py index c25878d..56afa03 100755 --- a/ods2md.py +++ b/ods2md.py @@ -1,8 +1,26 @@ #!/usr/bin/env python3 +# Copyright 2015, 2017 Kenny Chan +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +# associated documentation files (the "Software"), to deal in the Software without restriction, +# including without limitation the rights to use, copy, modify, merge, publish, distribute, +# sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all copies or +# substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT +# NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT +# OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +from __future__ import print_function + import ezodf import sys -import html import unicodedata # Ref: http://stackoverflow.com/a/31666966/224671 diff --git a/requirements.txt b/requirements.txt index 7463e9e..f8bb0f0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -ezodf==0.3.0 -lxml==3.4.4 +ezodf==0.3.2 +lxml==3.7.2 diff --git a/sample.png b/sample.png new file mode 100644 index 0000000000000000000000000000000000000000..5978a498858a3425feca5a9753250130db73c784 GIT binary patch literal 36752 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