Merge pull request #72 from xando/develop

import_book method for xls format implemented
This commit is contained in:
Kenneth Reitz 2012-05-16 12:13:57 -07:00
commit 40e0f41b4c
3 changed files with 34 additions and 1 deletions

View File

@ -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__
)

View File

@ -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"

View File

@ -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)