pyexcel-cli - Let you focus on data, instead of file formats

Author:C.W.
Source code:http://github.com/pyexcel/pyexcel-cli.git
Issues:http://github.com/pyexcel/pyexcel-cli/issues
License:New BSD License
Released:0.0.3
Generated:Jul 15, 2017

Introduction

pyexcel-cli brings pyexcel to make it easy to consume/produce information stored in excel files on command line interface. This library can turn the excel data into a list of lists, a list of records(dictionaries), dictionaries of lists. And vice versa. Hence it lets you focus on data in shell programming, instead of file formats.

Hightlighted features:

  1. View data in the excel files without Microsoft Office or Open Office
  2. Transcode data among supported excel file formats
  3. Merge files in various excel file formats into one
  4. Split a multi-sheet excel file into single sheet files
  5. Find difference in data between two excel files

Usage

$ cd demo
$ pyexcel view --in-browser --output-file-type sortable.html --sheet-index 0 https://github.com/pyexcel/excel2table/raw/master/sample/goog.ods

Here’s what you will get:

https://github.com/pyexcel/pyexcel-cli/raw/master/pyexcel-cli-sortable.gif

Note

You will need to install pyexcel-sortable, which renders it.

Here is another cli example usage:

$ pyexcel view https://github.com/pyexcel/pyexcel-cli/blob/master/tests/fixtures/multiple-sheets.xls
Sheet 1:
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+
Sheet 2:
+---+---+---+
| X | Y | Z |
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
Sheet 3:
+---+---+---+
| O | P | Q |
+---+---+---+
| 3 | 2 | 1 |
+---+---+---+
| 4 | 3 | 2 |
+---+---+---+

Because pyexcel family is loosely coupled, especially for file format supports, you install the libraries that you need to. If you need to support xls format, you will need to install pyexcel-xls. For more information, please see the plugin section.

Installation

You can install it via pip:

$ pip install pyexcel-cli

or clone it and install it:

$ git clone https://github.com/pyexcel/pyexcel-cli.git
$ cd pyexcel-cli
$ python setup.py install

List of plugins

A list of file formats supported by external plugins
Package name Supported file formats Dependencies Python versions
pyexcel-io csv, csvz [1], tsv, tsvz [2]   2.6, 2.7, 3.3, 3.4, 3.5, 3.6 pypy
pyexcel-xls xls, xlsx(read only), xlsm(read only) xlrd, xlwt same as above
pyexcel-xlsx xlsx openpyxl same as above
pyexcel-xlsxw xlsx(write only) XlsxWriter same as above
pyexcel-ods3 ods ezodf, lxml 2.6, 2.7, 3.3, 3.4 3.5, 3.6
pyexcel-ods ods odfpy same as above
pyexcel-odsr ods(read only) lxml same as above
pyexcel-text (write only)json, rst, mediawiki, html, latex, grid, pipe, orgtbl, plain simple tabulate 2.6, 2.7, 3.3, 3.4 3.5, 3.6, pypy
pyexcel-handsontable handsontable in html handsontable same as above
pyexcel-pygal svg chart pygal 2.7, 3.3, 3.4, 3.5 3.6, pypy
pyexcel-sortable sortable table in html csvtotable same as above

In order to manage the list of plugins installed, you need to use pip to add or remove a plugin. When you use virtualenv, you can have different plugins per virtual environment. In the situation where you have multiple plugins that does the same thing in your environment, you need to tell pyexcel which plugin to use per function call. For example, pyexcel-ods and pyexcel-odsr, and you want to get_array to use pyexcel-odsr. You need to append get_array(..., library=’pyexcel-odsr’).

Footnotes

[1]zipped csv file
[2]zipped tsv file

Command line reference

Usage: pyexcel-script.py [OPTIONS] COMMAND [ARGS]...

Read and write data in different excel formats

file type in pyexcel refers to file formats, e.g. csv, xls

Options:
--help Show this message and exit.
Commands:
  1. diff diff two excel files
  2. merge Merge excel files into one
  3. split Split a multi-sheet file into single ones
  4. transcode Transcode an excel file
  5. view View an excel file

Tutorial

How to see the difference between two excel files using pyexcel-cli

First of all, the difference in fonts, styles, formula and charts are not supported. It only finds the difference in data. In order to see all command line options, you could do:

$ pyexcel diff --help

In order to get you started, here is an example command line:

$ pyexcel diff filea.xls fileb.csv

The source file content could come from stdin, but the command line syntax changes a bit:

$ cat filea.xls | pyexcel diff --source-file-type xls - fileb.csv

How to transcode a sheet of an excel file into csv

Suppose you have an example file as:

>>> import pyexcel as p
    >>> bookdict = {
    ...     "A": [[1]],
    ...     "B": [[2]],
    ...     "C": [[3]],
    ... }
>>> p.save_book_as(bookdict=bookdict, dest_file_name="example.xlsx")

Now, you would like to transcode sheet “B” into a csv file, you can do:

$ pyexcel transcode --sheet-name B example.xslx example-sheet-b.csv

View your excel files without any additional software

Suppose you have an census file and you would like to view it graphically but you do not have Microsoft Excel, Apple Numbers nor Open Office with you. Luckily, you have Python and pyexcel. Here is what you can do:

$ pyexcel view --in-browser https://github.com/pyexcel/pyexcel-handsontable/raw/master/demo/census.xls
_images/pyexcel-cli.gif

Suppose you have an google stock price and you wanted to view but also sort them. Here is what you can do:

$ pyexcel view --in-browser --output-file-type sortable.html --sheet-index 0 https://github.com/pyexcel/excel2table/raw/master/sample/goog.ods
_images/pyexcel-cli-sortable.gif