From 8c92e878a3a83f2e7d0c6cf3a1fe4a2f1ef59dba Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 4 Oct 2010 11:38:17 -0400 Subject: [PATCH] Upgraded XLS abstraction layer. --- tablib/formats/_xls.py | 52 +++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/tablib/formats/_xls.py b/tablib/formats/_xls.py index 04cd9a2..0946af4 100644 --- a/tablib/formats/_xls.py +++ b/tablib/formats/_xls.py @@ -18,12 +18,37 @@ def export_set(dataset): wb = xlwt.Workbook(encoding='utf8') ws = wb.add_sheet(dataset.title if dataset.title else 'Tabbed Dataset') - _package = dataset._package(dicts=False) + dset_sheet(dataset, ws) + 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)) + + dset_sheet(dataset, ws) + + + stream = cStringIO.StringIO() + wb.save(stream) + return stream.getvalue() + + +def dset_sheet(dataset, ws): + """Completes given worksheet from given Dataset.""" + _package = dataset._package(dicts=False) + for i, sep in enumerate(dataset._separators): _offset = i _package.insert((sep[0] + _offset), (sep[1],)) - + for i, row in enumerate(_package): for j, col in enumerate(row): @@ -39,25 +64,4 @@ def export_set(dataset): else: ws.write(i, j, col, wrap) - 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, wrap) - - - stream = cStringIO.StringIO() - wb.save(stream) - return stream.getvalue() \ No newline at end of file + \ No newline at end of file