Package: pyexcel-text
It is a plugin topyexceland extends
its capbility to present and write data in text fromats mainly throughtabulate:“plain”“simple”“grid”“pipe”“orgtbl”“rst”“mediawiki”“latex”“latex_booktabs”“json”“html”Since v0.2.7,jsonandndjsoninput are also supported.UsageWhat’s new?>>>importpyexcelaspe>>>sheet=pe.Sheet()>>>sheet.json='[[1,2],[2,3]]'>>>sheetpyexcelsheet:+---+---+|1|2|+---+---+|2|3|+---+---+>>>highspeedrail=pe.Sheet()>>>highspeedrail.json="""
... [{"year": 1903, "country": "Germany", "speed": "206.7km/h"},
... {"year": 1964, "country": "Japan", "speed": "210km/h"},
... {"year": 2008, "country": "China", "speed": "350km/h"}]
... """>>>highspeedrail.name='High Speed Train Speed Break Through (Source: Wikipedia)'>>>highspeedrailHighSpeedTrainSpeedBreakThrough(Source:Wikipedia):+---------+-----------+------+|country|speed|year|+---------+-----------+------+|Germany|206.7km/h|1903|+---------+-----------+------+|Japan|210km/h|1964|+---------+-----------+------+|China|350km/h|2008|+---------+-----------+------+>>>henley_on_thames_facts=pe.Sheet()>>>henley_on_thames_facts.json="""
... {"area": "5.58 square meters",
... "population": "11,619",
... "civial parish": "Henley-on-Thames",
... "latitude": "51.536",
... "longitude": "-0.898"
... }""">>>henley_on_thames_factspyexcelsheet:+--------------------+------------------+----------+-----------+------------+|area|civialparish|latitude|longitude|population|+--------------------+------------------+----------+-----------+------------+|5.58squaremeters|Henley-on-Thames|51.536|-0.898|11,619|+--------------------+------------------+----------+-----------+------------+>>>ccs_insight=pe.Sheet()>>>ccs_insight.name="Worldwide Mobile Phone Shipments (Billions), 2017-2021">>>ccs_insight.json="""
... {"year": ["2017", "2018", "2019", "2020", "2021"],
... "smart phones": [1.53, 1.64, 1.74, 1.82, 1.90],
... "feature phones": [0.46, 0.38, 0.30, 0.23, 0.17]}""">>>ccs_insightpyexcelsheet:+----------------+--------------+------+|featurephones|smartphones|year|+----------------+--------------+------+|0.46|1.53|2017|+----------------+--------------+------+|0.38|1.64|2018|+----------------+--------------+------+|0.3|1.74|2019|+----------------+--------------+------+|0.23|1.82|2020|+----------------+--------------+------+|0.17|1.9|2021|+----------------+--------------+------+Here is a variant of json:>>> highspeedrail2 = pe.Sheet()
>>> highspeedrail2.ndjson = """
... {"year": 1903, "country": "Germany", "speed": "206.7km/h"}
... {"year": 1964, "country": "Japan", "speed": "210km/h"}
... {"year": 2008, "country": "China", "speed": "350km/h"}
... """.strip()
>>> highspeedrail2.name = 'High Speed Train Speed Break Through (Source: Wikipedia)'
>>> highspeedrail2
High Speed Train Speed Break Through (Source: Wikipedia):
+---------+-----------+------+
| country | speed     | year |
+---------+-----------+------+
| Germany | 206.7km/h | 1903 |
+---------+-----------+------+
| Japan   | 210km/h   | 1964 |
+---------+-----------+------+
| China   | 350km/h   | 2008 |
+---------+-----------+------+
>>> henley_on_thames_facts2 = pe.Sheet()
>>> henley_on_thames_facts2.ndjson = """
... {"area": "5.58 square meters"}
... {"population": "11,619"}
... {"civial parish": "Henley-on-Thames"}
... {"latitude": "51.536"}
... {"longitude": "-0.898"}
... """.strip()
>>> henley_on_thames_facts2
pyexcel sheet:
+---------------+--------------------+
| area          | 5.58 square meters |
+---------------+--------------------+
| population    | 11,619             |
+---------------+--------------------+
| civial parish | Henley-on-Thames   |
+---------------+--------------------+
| latitude      | 51.536             |
+---------------+--------------------+
| longitude     | -0.898             |
+---------------+--------------------+
>>> ccs_insight2 = pe.Sheet()
>>> ccs_insight2.name = "Worldwide Mobile Phone Shipments (Billions), 2017-2021"
>>> ccs_insight2.ndjson = """
... {"year": ["2017", "2018", "2019", "2020", "2021"]}
... {"smart phones": [1.53, 1.64, 1.74, 1.82, 1.90]}
... {"feature phones": [0.46, 0.38, 0.30, 0.23, 0.17]}
... """.strip()
>>> ccs_insight2
pyexcel sheet:
+----------------+------+------+------+------+------+
| year           | 2017 | 2018 | 2019 | 2020 | 2021 |
+----------------+------+------+------+------+------+
| smart phones   | 1.53 | 1.64 | 1.74 | 1.82 | 1.9  |
+----------------+------+------+------+------+------+
| feature phones | 0.46 | 0.38 | 0.3  | 0.23 | 0.17 |
+----------------+------+------+------+------+------+Simple>>>importpyexcelaspe>>>content=[...["Column 1","Column 2","Column 3"],...[1,2,3],...[4,5,6],...[7,8,9]...]>>>sheet=pe.Sheet(content)>>>print(sheet.simple)pyexcelsheet:------------------------Column1Column2Column3123456789------------------------>>>sheet.name_columns_by_row(0)>>>print(sheet.simple)pyexcelsheet:Column1Column2Column3------------------------------123456789Grid>>>print(sheet.grid)pyexcelsheet:+------------+------------+------------+|Column1|Column2|Column3|+============+============+============+|1|2|3|+------------+------------+------------+|4|5|6|+------------+------------+------------+|7|8|9|+------------+------------+------------+Mediawiki>>>multiple_sheets={...'Sheet 1':...[...[1.0,2.0,3.0],...[4.0,5.0,6.0],...[7.0,8.0,9.0]...],...'Sheet 2':...[...['X','Y','Z'],...[1.0,2.0,3.0],...[4.0,5.0,6.0]...],...'Sheet 3':...[...['O','P','Q'],...[3.0,2.0,1.0],...[4.0,3.0,2.0]...]...}>>>book=pe.Book(multiple_sheets)>>>book.save_as("myfile.mediawiki")>>>myfile=open("myfile.mediawiki")>>>print(myfile.read())Sheet1:{|class="wikitable"style="text-align: left;"|+<!--caption-->|-|align="right"|1||align="right"|2||align="right"|3|-|align="right"|4||align="right"|5||align="right"|6|-|align="right"|7||align="right"|8||align="right"|9|}Sheet2:{|class="wikitable"style="text-align: left;"|+<!--caption-->|-|X||Y||Z|-|1.0||2.0||3.0|-|4.0||5.0||6.0|}Sheet3:{|class="wikitable"style="text-align: left;"|+<!--caption-->|-|O||P||Q|-|3.0||2.0||1.0|-|4.0||3.0||2.0|}>>>myfile.close()Html>>>book.save_as("myfile.html")>>>myfile=open("myfile.html")>>>print(myfile.read())# doctest: +SKIPSheet1:<table><tr><tdstyle="text-align: right;">1</td><tdstyle="text-align: right;">2</td><tdstyle="text-align: right;">3</td></tr><tr><tdstyle="text-align: right;">4</td><tdstyle="text-align: right;">5</td><tdstyle="text-align: right;">6</td></tr><tr><tdstyle="text-align: right;">7</td><tdstyle="text-align: right;">8</td><tdstyle="text-align: right;">9</td></tr></table>Sheet2:<table><tr><td>X</td><td>Y</td><td>Z</td></tr><tr><td>1.0</td><td>2.0</td><td>3.0</td></tr><tr><td>4.0</td><td>5.0</td><td>6.0</td></tr></table>Sheet3:<table><tr><td>O</td><td>P</td><td>Q</td></tr><tr><td>3.0</td><td>2.0</td><td>1.0</td></tr><tr><td>4.0</td><td>3.0</td><td>2.0</td></tr></table>Please note tabulate 0.7.7 gives an extra tbody tag around tr tag.DependenciestabulateChange log0.2.7 - 30.07.2017Updated:Read specific data structure from pure json format: two dimensional
array, a dicionary of list or two dimensional list and a list of records.Read newline delimited json. two dimensional arrays, a a dicionary of list
or two dimensional list and a list of records are supported.0.2.6 - 19.06.2017Updated:Support pyexcel v0.5.0. Plugin interface updated to Rendererremoved deprecated save_as and save_to_memory functions0.2.5 - 28.10.2016Updated:Support pyexcel v0.4.00.2.4 - 28.10.2016Added:support pyexcel v0.3.00.2.3 - 14.07.2016Added:json format: serialize date and datetimeUpdated:if a sheet has row_names, its json output become records(a list of dictionary)
instead of a dictionary of row name vs the rest of row values.0.2.2 - 01.06.2016quick bug fix, seeissue #270.2.1 - 01.06.2016compactibility with pyexcel-io 0.2.0 and pyexcel 0.2.20.2.0 - 23.04.2016It is a complete re-write of the whole extension.Addedhtml supportsupport pyexcel 0.2.0’s generator outputpypy and pypy3 in test targetssupport file stream and dot notation, e.g. pyexcel.Sheet.rst will return rst text representation of it.Updated#8, write_header as an option(False) to disable header writingthe json output of multiple sheet book will be sorted by its sheet names.No longer, pyexcel-text is pyexcel-io plugin but pyexcel.sources plugin.0.1.1 - 30.01.2016Updated#2, fix a typo in setup.py0.1.0 - 17.01.2016Updatedsupport pyexcel 0.2.00.0.3 - 12.06.2015Updated#1, align api interfacewith other pyexcel plugins, e.g. save_as, save_book_as0.0.2 - 30.11.2014Updatedsupport pyexcel 0.0.90.0.` - 20.11.2014Initial release