From 1a20958a69ea317384eaaed9730b0d0ef2b41735 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 Date: Mon, 19 May 2025 13:48:27 +0800 Subject: [PATCH] fix: Excel export prohibits inputting external links or formulas --- apps/dataset/serializers/document_serializers.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/dataset/serializers/document_serializers.py b/apps/dataset/serializers/document_serializers.py index 5915877fc7c..530b265291d 100644 --- a/apps/dataset/serializers/document_serializers.py +++ b/apps/dataset/serializers/document_serializers.py @@ -23,6 +23,8 @@ from django.db.models import QuerySet, Count from django.db.models.functions import Substr, Reverse from django.http import HttpResponse +from django.utils.translation import get_language +from django.utils.translation import gettext_lazy as _, gettext, to_locale from drf_yasg import openapi from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE from rest_framework import serializers @@ -64,8 +66,6 @@ embedding_by_document_list from setting.models import Model from smartdoc.conf import PROJECT_DIR -from django.utils.translation import gettext_lazy as _, gettext, to_locale -from django.utils.translation import get_language parse_qa_handle_list = [XlsParseQAHandle(), CsvParseQAHandle(), XlsxParseQAHandle(), ZipParseQAHandle()] parse_table_handle_list = [CsvSplitTableHandle(), XlsSplitTableHandle(), XlsxSplitTableHandle()] @@ -661,7 +661,10 @@ def get_workbook(data_dict, document_dict): cell = worksheet.cell(row=row_idx + 1, column=col_idx + 1) if isinstance(col, str): col = re.sub(ILLEGAL_CHARACTERS_RE, '', col) - cell.value = col + if col.startswith(('=', '+', '-', '@')): + cell.value = '\ufeff' + col + else: + cell.value = col # 创建HttpResponse对象返回Excel文件 return workbook