a bunch of cleanup from my previous commit

This commit is contained in:
Mark Rogers
2011-05-12 15:59:57 -05:00
parent 87ce64d4c8
commit 5350355fbe
6 changed files with 49 additions and 30 deletions
+2 -1
View File
@@ -14,4 +14,5 @@ Patches and Suggestions
- Josh Ourisman
- Luca Beltrame
- Benjamin Wohlwend
- Erik Youngren
- Erik Youngren
- Mark Rogers
+1
View File
@@ -33,6 +33,7 @@ setup(
'tablib', 'tablib.formats',
'tablib.packages',
'tablib.packages.xlwt',
'tablib.packages.openpyxl',
'tablib.packages.yaml',
'tablib.packages.unicodecsv'
],
+9
View File
@@ -392,6 +392,15 @@ class Dataset(object):
@property
def xlsx():
"""An Excel Spreadsheet representation of the :class:`Dataset` object, with :ref:`separators`. Cannot be set.
.. admonition:: Binary Warning
:class:`Dataset.xlsx` contains binary data, so make sure to write in binary mode::
with open('output.xlsx', 'wb') as f:
f.write(data.xlsx)'
"""
pass
+13
View File
@@ -392,6 +392,19 @@ class Dataset(object):
"""
pass
@property
def xlsx():
"""An Excel Spreadsheet representation of the :class:`Dataset` object, with :ref:`separators`. Cannot be set.
.. admonition:: Binary Warning
:class:`Dataset.xlsx` contains binary data, so make sure to write in binary mode::
with open('output.xlsx', 'wb') as f:
f.write(data.xlsx)'
"""
pass
@property
def csv():
+22 -29
View File
@@ -7,30 +7,20 @@ import sys
if sys.version_info[0] > 2:
from io import BytesIO
import tablib.packages.xlwt3 as xlwt
from io import BytesIO
else:
from cStringIO import StringIO as BytesIO
import tablib.packages.xlwt as xlwt
from tablib.packages.openpyxl.workbook import Workbook
from tablib.packages.openpyxl.writer.excel import ExcelWriter
from tablib.packages.openpyxl.cell import get_column_letter
title = 'xlsx'
extentions = ('xlsx',)
# special styles
#wrap = xlwt.easyxf("alignment: wrap on")
#bold = xlwt.easyxf("font: bold on")
def export_set(dataset):
"""Returns XLS representation of Dataset."""
"""Returns XLSX representation of Dataset."""
wb = Workbook()
ws = wb.worksheets[0]
@@ -44,19 +34,19 @@ def export_set(dataset):
def export_book(databook):
"""Returns XLS representation of DataBook."""
"""Returns XLSX representation of DataBook."""
wb = Workbook()
ew = ExcelWriter(workbook = wb)
for i, dset in enumerate(databook._datasets):
ws = wb.add_sheet()
ws = wb.create_sheet()
ws.title = dset.title if dset.title else 'Sheet%s' % (i)
dset_sheet(dset, ws)
stream = BytesIO()
ew.save(filename='test.xlsx')
ew.save(stream)
return stream.getvalue()
@@ -75,30 +65,33 @@ def dset_sheet(dataset, ws):
# bold headers
if (row_number == 1) and dataset.headers:
ws.cell('%s%s'%(col_idx, row_number)).value = '%s' % col
#ws.write(i, j, col, bold)
# frozen header row
#ws.panes_frozen = True
#ws.horz_split_pos = 1
ws.cell('%s%s'%(col_idx, row_number)).value = unicode(
'%s' % col, errors='ignore')
style = ws.get_style('%s%s' % (col_idx, row_number))
style.font.bold = True
ws.freeze_panes = '%s%s' % (col_idx, row_number)
# bold separators
elif len(row) < dataset.width:
ws.cell('%s%s'%(col_idx, row_number)).value = '%s' % col
#ws.write(i, j, col, bold)
ws.cell('%s%s'%(col_idx, row_number)).value = unicode(
'%s' % col, errors='ignore')
style = ws.get_style('%s%s' % (col_idx, row_number))
style.font.bold = True
# wrap the rest
else:
try:
if '\n' in col:
ws.cell('%s%s'%(col_idx, row_number)).value = '%s' % col
#ws.write(i, j, col, wrap)
ws.cell('%s%s'%(col_idx, row_number)).value = unicode(
'%s' % col, errors='ignore')
style = ws.get_style('%s%s' % (col_idx, row_number))
style.alignment.wrap_text
else:
ws.cell('%s%s'%(col_idx, row_number)).value = '%s' % col
#ws.write(i, j, col)
ws.cell('%s%s'%(col_idx, row_number)).value = unicode(
'%s' % col, errors='ignore')
except TypeError:
ws.cell('%s%s'%(col_idx, row_number)).value = '%s' % col
#ws.write(i, j, col)
ws.cell('%s%s'%(col_idx, row_number)).value = unicode(
'%s' % col, errors='ignore')
+2
View File
@@ -222,6 +222,7 @@ class TablibTestCase(unittest.TestCase):
data.csv
data.tsv
data.xls
data.xlsx
def test_book_export_no_exceptions(self):
@@ -233,6 +234,7 @@ class TablibTestCase(unittest.TestCase):
book.json
book.yaml
book.xls
book.xlsx
def test_json_import_set(self):