summaryrefslogtreecommitdiff
path: root/tablib/formats/_xlsx.py
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2017-02-20 16:41:33 +0100
committerIuri de Silvio <iurisilvio@gmail.com>2017-02-20 12:41:33 -0300
commite66eb4a18967dd4d35e6e9da265622e9e4015103 (patch)
tree6e006e65b5daa060c26d6293662b4e3a5b9eebc3 /tablib/formats/_xlsx.py
parent0e720d78ca7e8c4466b8f13970ebae8e12700d00 (diff)
downloadtablib-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.py37
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)