diff options
Diffstat (limited to 'tablib/formats')
| -rw-r--r-- | tablib/formats/__init__.py | 11 | ||||
| -rw-r--r-- | tablib/formats/_csv.py | 42 | ||||
| -rw-r--r-- | tablib/formats/_json.py | 38 | ||||
| -rw-r--r-- | tablib/formats/_xls.py | 45 | ||||
| -rw-r--r-- | tablib/formats/_yaml.py | 42 |
5 files changed, 178 insertions, 0 deletions
diff --git a/tablib/formats/__init__.py b/tablib/formats/__init__.py new file mode 100644 index 0000000..b22a959 --- /dev/null +++ b/tablib/formats/__init__.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- + +""" Tablib - formats +""" + +import _csv as csv +import _json as json +import _xls as xls +import _yaml as yaml + +FORMATS = (csv, json, xls, yaml) diff --git a/tablib/formats/_csv.py b/tablib/formats/_csv.py new file mode 100644 index 0000000..8b19da7 --- /dev/null +++ b/tablib/formats/_csv.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +""" Tablib - CSV Support. +""" + +import cStringIO +import csv +import os + +import simplejson as json + +import tablib + + +title = 'csv' +extentions = ('csv',) + + + +def export_set(dataset): + """Returns CSV representation of Dataset.""" + stream = cStringIO.StringIO() + _csv = csv.writer(stream) + + for row in dataset._package(dicts=False): + _csv.writerow(row) + + return stream.getvalue() + + +def import_set(dset, in_stream, headers=True): + """Returns dataset from CSV stream.""" + + dset.wipe() + + rows = csv.reader(in_stream.split()) + for i, row in enumerate(rows): + + if (i == 0) and (headers): + dset.headers = row + else: + dset.append(row) diff --git a/tablib/formats/_json.py b/tablib/formats/_json.py new file mode 100644 index 0000000..1f92b58 --- /dev/null +++ b/tablib/formats/_json.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- + +""" Tablib - JSON Support +""" + +import simplejson as json +import tablib.core + +title = 'json' +extentions = ('json', 'jsn') + + +def export_set(dataset): + """Returns JSON representation of Dataset.""" + return json.dumps(dataset.dict) + + +def export_book(databook): + """Returns JSON representation of Databook.""" + return json.dumps(databook._package()) + + +def import_set(dset, in_stream): + """Returns dataset from JSON stream.""" + + dset.wipe() + dset.dict = json.loads(in_stream) + + +def import_book(dbook, in_stream): + """Returns databook from JSON stream.""" + + dbook.wipe() + for sheet in json.loads(in_stream): + data = tablib.core.Dataset() + data.title = sheet['title'] + data.dict = sheet['data'] + dbook.add_sheet(data) diff --git a/tablib/formats/_xls.py b/tablib/formats/_xls.py new file mode 100644 index 0000000..1a739af --- /dev/null +++ b/tablib/formats/_xls.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- + +""" Tablib - XLS Support. +""" + +import xlwt +import cStringIO + + +title = 'xls' +extentions = ('xls',) + + +def export_set(dataset): + """Returns XLS representation of Dataset.""" + + wb = xlwt.Workbook(encoding='utf8') + ws = wb.add_sheet(dataset.title if dataset.title else 'Tabbed Dataset') + + for i, row in enumerate(dataset._package(dicts=False)): + for j, col in enumerate(row): + ws.write(i, j, col) + + stream = cStringIO.StringIO() + wb.save(stream) + return stream.getvalue() + + +def export_book(databook): + """Returns XLS representation of DataBook.""" + + wb = xlwt.Workbook(encoding='utf8') + + for i, dset in enumerate(databook._datasets): + ws = wb.add_sheet(dset.title if dset.title else 'Sheet%s' % (i)) + + #for row in self._package(dicts=False): + for i, row in enumerate(dset._package(dicts=False)): + for j, col in enumerate(row): + ws.write(i, j, col) + + + stream = cStringIO.StringIO() + wb.save(stream) + return stream.getvalue()
\ No newline at end of file diff --git a/tablib/formats/_yaml.py b/tablib/formats/_yaml.py new file mode 100644 index 0000000..4cac8aa --- /dev/null +++ b/tablib/formats/_yaml.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +""" Tablib - YAML Support. +""" + +import yaml +import tablib + + + +title = 'yaml' +extentions = ('yaml', 'yml') + + + +def export_set(dataset): + """Returns YAML representation of Dataset.""" + return yaml.dump(dataset.dict) + + +def export_book(databook): + """Returns YAML representation of Databook.""" + return yaml.dump(databook._package()) + + +def import_set(dset, in_stream): + """Returns dataset from YAML stream.""" + + dset.wipe() + dset.dict = yaml.load(in_stream) + + +def import_book(dbook, in_stream): + """Returns databook from YAML stream.""" + + dbook.wipe() + + for sheet in yaml.load(in_stream): + data = tablib.core.Dataset() + data.title = sheet['title'] + data.dict = sheet['data'] + dbook.add_sheet(data)
\ No newline at end of file |
