From 5e0d8048f9d125dfe7ee2460b4665cde3a9c0751 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 <80892890+shaohuzhang1@users.noreply.github.com> Date: Mon, 19 May 2025 13:51:13 +0800 Subject: [PATCH] fix: Excel export prohibits inputting external links or formulas (#3105) --- 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 5915877fc..530b26529 100644 --- a/apps/dataset/serializers/document_serializers.py +++ b/apps/dataset/serializers/document_serializers.py @@ -23,6 +23,8 @@ from django.db import transaction, models 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 @@ from embedding.task.embedding import embedding_by_document, delete_embedding_by_ 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 @@ class DocumentSerializers(ApiMixin, serializers.Serializer): 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