diff --git a/src/spaceone/inventory/manager/export_manager/__init__.py b/src/spaceone/inventory/manager/export_manager/__init__.py index 0e4955d..068135f 100644 --- a/src/spaceone/inventory/manager/export_manager/__init__.py +++ b/src/spaceone/inventory/manager/export_manager/__init__.py @@ -1,7 +1,9 @@ import tempfile import logging -from datetime import datetime import pandas as pd +import re +from datetime import datetime +from typing import Any from openpyxl.styles import Font, Border, PatternFill, Alignment, Side from spaceone.core.manager import BaseManager @@ -75,12 +77,20 @@ def _change_sheet_name(name: str) -> str: def _get_default_font(is_header: bool = False) -> Font: return Font(size=12, bold=is_header, color="FFFFFF" if is_header else "000000") + @staticmethod + def _sanitize_string(value: Any) -> Any: + illegal_characters_re = re.compile(r"[\000-\010\013\014\016-\037]") + if isinstance(value, str): + value = illegal_characters_re.sub("", value) + return value + @staticmethod def _write_excel_file( writer: pd.ExcelWriter, df: pd.DataFrame, sheet_name: str, title: str = None ) -> None: start_row = 1 if title else 0 + df = df.map(ExportManager._sanitize_string) df.to_excel(writer, sheet_name=sheet_name, index=False, startrow=start_row) ws = writer.sheets[sheet_name]