summaryrefslogtreecommitdiff
path: root/odoo/tools/misc.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-07-07 14:18:07 +0200
committerChristophe Simonis <chs@odoo.com>2017-07-07 14:18:07 +0200
commit0f2b2c4e2b99df8d68456016a4bea86e26c1c80e (patch)
tree37ecc505ddb81ec1cd048dba9655e03e3176c546 /odoo/tools/misc.py
parent5241d479b222bc11ebd1c0ff41c38872a3fea8fd (diff)
parent514a1a76d81de3943f752ceaa5e487a2d25b9bb7 (diff)
[MERGE] forward port branch saas-15 up to 514a1a76d81
Diffstat (limited to 'odoo/tools/misc.py')
-rw-r--r--odoo/tools/misc.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/odoo/tools/misc.py b/odoo/tools/misc.py
index 45ff5e28bbd..448ffdfed43 100644
--- a/odoo/tools/misc.py
+++ b/odoo/tools/misc.py
@@ -374,6 +374,28 @@ try:
except ImportError:
xlwt = None
+try:
+ import xlsxwriter
+
+ # add some sanitizations to respect the excel sheet name restrictions
+ # as the sheet name is often translatable, can not control the input
+ class PatchedXlsxWorkbook(xlsxwriter.Workbook):
+
+ # TODO when xlsxwriter bump to 0.9.8, add worksheet_class=None parameter instead of kw
+ def add_worksheet(self, name=None, **kw):
+ # invalid Excel character: []:*?/\
+ name = re.sub(r'[\[\]:*?/\\]', '', name)
+
+ # maximum size is 31 characters
+ name = name[:31]
+ return super(PatchedXlsxWorkbook, self).add_worksheet(name, **kw)
+
+ xlsxwriter.Workbook = PatchedXlsxWorkbook
+
+except ImportError:
+ xlsxwriter = None
+
+
def to_xml(s):
return s.replace('&','&amp;').replace('<','&lt;').replace('>','&gt;')