diff options
| author | Kenneth Reitz <me@kennethreitz.com> | 2012-05-16 12:13:57 -0700 |
|---|---|---|
| committer | Kenneth Reitz <me@kennethreitz.com> | 2012-05-16 12:13:57 -0700 |
| commit | 40e0f41b4cdf287ab46e2ab7e568a4c5e22f2d61 (patch) | |
| tree | 2244112fca923e18bae96fcabec42b89f8c85b66 | |
| parent | e8c923d7121da21cb96eedd68710c37f5c9b471f (diff) | |
| parent | 39435727ba79c0023056f45ca7c36d7c72bfb802 (diff) | |
| download | tablib-40e0f41b4cdf287ab46e2ab7e568a4c5e22f2d61.tar.gz | |
Merge pull request #72 from xando/develop
import_book method for xls format implemented
| -rw-r--r-- | tablib/__init__.py | 2 | ||||
| -rw-r--r-- | tablib/core.py | 13 | ||||
| -rw-r--r-- | tablib/formats/_xls.py | 20 |
3 files changed, 34 insertions, 1 deletions
diff --git a/tablib/__init__.py b/tablib/__init__.py index ec8467e..65d1e13 100644 --- a/tablib/__init__.py +++ b/tablib/__init__.py @@ -1,7 +1,7 @@ """ Tablib. """ from tablib.core import ( - Databook, Dataset, detect, import_set, + Databook, Dataset, detect, import_set, import_book, InvalidDatasetType, InvalidDimensions, UnsupportedFormat, __version__ ) diff --git a/tablib/core.py b/tablib/core.py index c52671e..1fdc77c 100644 --- a/tablib/core.py +++ b/tablib/core.py @@ -1008,6 +1008,19 @@ def import_set(stream): return None +def import_book(stream): + """Return dataset of given stream.""" + (format, stream) = detect(stream) + + try: + databook = Databook() + format.import_book(databook, stream) + return databook + + except AttributeError: + return None + + class InvalidDatasetType(Exception): "Only Datasets can be added to a DataBook" diff --git a/tablib/formats/_xls.py b/tablib/formats/_xls.py index 6530d91..ebec9e1 100644 --- a/tablib/formats/_xls.py +++ b/tablib/formats/_xls.py @@ -66,6 +66,26 @@ def export_book(databook): return stream.getvalue() +def import_book(dbook, in_stream, headers=True): + """Returns databook from XLS stream.""" + + dbook.wipe() + + xls_book = xlrd.open_workbook(file_contents=in_stream) + + for sheet in xls_book.sheets(): + data = tablib.Dataset() + data.title = sheet.name + + for i in xrange(sheet.nrows): + if (i == 0) and (headers): + data.headers = sheet.row_values(0) + else: + data.append(sheet.row_values(i)) + + dbook.add_sheet(data) + + def dset_sheet(dataset, ws): """Completes given worksheet from given Dataset.""" _package = dataset._package(dicts=False) |
