summaryrefslogtreecommitdiff
path: root/tablib/formats/_xls.py
diff options
context:
space:
mode:
Diffstat (limited to 'tablib/formats/_xls.py')
-rw-r--r--tablib/formats/_xls.py36
1 files changed, 34 insertions, 2 deletions
diff --git a/tablib/formats/_xls.py b/tablib/formats/_xls.py
index 48dcc0b..1282a43 100644
--- a/tablib/formats/_xls.py
+++ b/tablib/formats/_xls.py
@@ -5,8 +5,8 @@
import sys
-from tablib.compat import BytesIO, xlwt
-
+from tablib.compat import BytesIO, xlwt, xlrd
+import tablib
title = 'xls'
extentions = ('xls',)
@@ -16,6 +16,38 @@ wrap = xlwt.easyxf("alignment: wrap on")
bold = xlwt.easyxf("font: bold on")
+def import_set(dset, in_stream, headers=True):
+ """Returns dataset from XLS stream."""
+
+ dset.wipe()
+
+ wb = xlrd.open_workbook(file_contents=in_stream)
+ ws = wb.sheet_by_index(0)
+
+ for i in range(ws.nrows):
+ if (i == 0) and (headers):
+ dset.headers = ws.row_values(i)
+ else:
+ dset.append(ws.row_values(i))
+
+
+def import_book(dbook, in_stream, headers=True):
+ """Returns databook from XLS stream."""
+
+ dbook.wipe()
+
+ wb = xlrd.open_workbook(file_contents=in_stream)
+ for ws in wb.sheets():
+ data = tablib.Dataset()
+ data.title = ws.name
+ for i in range(ws.nrows):
+ if (i == 0) and (headers):
+ data.headers = ws.row_values(i)
+ else:
+ data.append(ws.row_values(i))
+ dbook.add_sheet(data)
+
+
def export_set(dataset):
"""Returns XLS representation of Dataset."""