From be583bc8fee5487e508d8b3748665efefaa9de03 Mon Sep 17 00:00:00 2001 From: David Raznick Date: Fri, 10 Jun 2016 10:02:24 +0100 Subject: [PATCH] [#421] remove control char --- flattentool/output.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/flattentool/output.py b/flattentool/output.py index bac44c3d..feb7eceb 100644 --- a/flattentool/output.py +++ b/flattentool/output.py @@ -5,9 +5,12 @@ """ import openpyxl +from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE import csv import os import sys +from warnings import warn +import six if sys.version > '3': import csv @@ -52,7 +55,16 @@ def write_sheet(self, sheet_name, sheet): worksheet.title = sheet_name worksheet.append(sheet_header) for sheet_line in sheet.lines: - worksheet.append([ sheet_line.get(x) for x in sheet_header ]) + line = [] + for header in sheet_header: + value = sheet_line.get(header) + if isinstance(value, six.text_type): + new_value = ILLEGAL_CHARACTERS_RE.sub('', value) + if new_value != value: + warn("Character(s) in '{}' are not allowed in a spreadsheet cell. Those character(s) will be removed".format(value)) + value = new_value + line.append(value) + worksheet.append(line) def close(self): self.workbook.remove_sheet(self.workbook.active)