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:
- View data in the excel files without Microsoft Office or Open Office
- Transcode data among supported excel file formats
- Merge files in various excel file formats into one
- Split a multi-sheet excel file into single sheet files
- 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:
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¶
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:
- diff diff two excel files
- merge Merge excel files into one
- split Split a multi-sheet file into single ones
- transcode Transcode an excel file
- 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
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