Skip to content
Snippets Groups Projects
Commit 8ddab219 authored by Emmanuel Viennet's avatar Emmanuel Viennet
Browse files

Fix: export excel avec caractères invalides

parent 845b0e93
No related branches found
No related tags found
No related merge requests found
...@@ -40,7 +40,9 @@ from openpyxl.styles.numbers import FORMAT_NUMBER_00, FORMAT_GENERAL, FORMAT_DAT ...@@ -40,7 +40,9 @@ from openpyxl.styles.numbers import FORMAT_NUMBER_00, FORMAT_GENERAL, FORMAT_DAT
from openpyxl.comments import Comment from openpyxl.comments import Comment
from openpyxl import Workbook, load_workbook from openpyxl import Workbook, load_workbook
from openpyxl.cell import WriteOnlyCell from openpyxl.cell import WriteOnlyCell
from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE
from openpyxl.styles import Font, Border, Side, Alignment, PatternFill from openpyxl.styles import Font, Border, Side, Alignment, PatternFill
from openpyxl.utils.exceptions import IllegalCharacterError
from openpyxl.worksheet.worksheet import Worksheet from openpyxl.worksheet.worksheet import Worksheet
import app.scodoc.sco_utils as scu import app.scodoc.sco_utils as scu
...@@ -366,8 +368,17 @@ class ScoExcelSheet: ...@@ -366,8 +368,17 @@ class ScoExcelSheet:
value = value.replace(tzinfo=None) value = value.replace(tzinfo=None)
# création de la cellule # création de la cellule
try:
cell = WriteOnlyCell(self.ws, value) cell = WriteOnlyCell(self.ws, value)
except IllegalCharacterError as exc:
if isinstance(value, str):
# chaine contenant un caractère interdit dans Excel: élimine
value = ILLEGAL_CHARACTERS_RE.sub("", value)
cell = WriteOnlyCell(self.ws, value)
else:
raise ScoValueError(
f"Valeur de cellule non autorisée: {value}"
) from exc
# recopie des styles # recopie des styles
if style is None: if style is None:
style = self.default_style style = self.default_style
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"Infos sur version ScoDoc" "Infos sur version ScoDoc"
SCOVERSION = "9.7.63" SCOVERSION = "9.7.64"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment