diff options
| author | Claude Paroz <claude@2xlibre.net> | 2017-02-20 16:41:33 +0100 |
|---|---|---|
| committer | Iuri de Silvio <iurisilvio@gmail.com> | 2017-02-20 12:41:33 -0300 |
| commit | e66eb4a18967dd4d35e6e9da265622e9e4015103 (patch) | |
| tree | 6e006e65b5daa060c26d6293662b4e3a5b9eebc3 /tablib/formats/_xlsx.py | |
| parent | 0e720d78ca7e8c4466b8f13970ebae8e12700d00 (diff) | |
| download | tablib-e66eb4a18967dd4d35e6e9da265622e9e4015103.tar.gz | |
Replaced vendored openpyxl by a dependency (#221)
It is time to make it happen.
* Dropped Python 3.2 support
Recent dependencies are dropping Python 3.2 too.
* Replaced vendored openpyxl by a dependency
Thanks Tommy Anthony for the initial patch.
Diffstat (limited to 'tablib/formats/_xlsx.py')
| -rw-r--r-- | tablib/formats/_xlsx.py | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/tablib/formats/_xlsx.py b/tablib/formats/_xlsx.py index 411e0fc..20f55df 100644 --- a/tablib/formats/_xlsx.py +++ b/tablib/formats/_xlsx.py @@ -11,12 +11,12 @@ if sys.version_info[0] > 2: else: from cStringIO import StringIO as BytesIO -from tablib.compat import openpyxl +import openpyxl import tablib Workbook = openpyxl.workbook.Workbook ExcelWriter = openpyxl.writer.excel.ExcelWriter -get_column_letter = openpyxl.cell.get_column_letter +get_column_letter = openpyxl.utils.get_column_letter from tablib.compat import unicode @@ -51,7 +51,8 @@ def export_book(databook, freeze_panes=True): """Returns XLSX representation of DataBook.""" wb = Workbook() - wb.worksheets = [] + for sheet in wb.worksheets: + wb.remove_sheet(sheet) for i, dset in enumerate(databook._datasets): ws = wb.create_sheet() ws.title = dset.title if dset.title else 'Sheet%s' % (i) @@ -111,42 +112,38 @@ def dset_sheet(dataset, ws, freeze_panes=True): _offset = i _package.insert((sep[0] + _offset), (sep[1],)) + bold = openpyxl.styles.Font(bold=True) + wrap_text = openpyxl.styles.Alignment(wrap_text=True) + for i, row in enumerate(_package): row_number = i + 1 for j, col in enumerate(row): col_idx = get_column_letter(j + 1) + cell = ws.cell('%s%s' % (col_idx, row_number)) # bold headers if (row_number == 1) and dataset.headers: - # ws.cell('%s%s'%(col_idx, row_number)).value = unicode( - # '%s' % col, errors='ignore') - ws.cell('%s%s'%(col_idx, row_number)).value = unicode(col) - style = ws.get_style('%s%s' % (col_idx, row_number)) - style.font.bold = True + # cell.value = unicode('%s' % col, errors='ignore') + cell.value = unicode(col) + cell.font = bold if freeze_panes: - # As already done in #53, but after Merge lost: # Export Freeze only after first Line ws.freeze_panes = 'A2' # bold separators elif len(row) < dataset.width: - 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 + cell.value = unicode('%s' % col, errors='ignore') + cell.font = bold # wrap the rest else: try: if '\n' in col: - 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 + cell.value = unicode('%s' % col, errors='ignore') + cell.alignment = wrap_text else: - ws.cell('%s%s'%(col_idx, row_number)).value = unicode( - '%s' % col, errors='ignore') + cell.value = unicode('%s' % col, errors='ignore') except TypeError: - ws.cell('%s%s'%(col_idx, row_number)).value = unicode(col) + cell.value = unicode(col) |
