From faa05ab94dbe0ac222607ed36bf9492ff9ffe843 Mon Sep 17 00:00:00 2001 From: sichan Date: Mon, 17 Jun 2024 20:52:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86excel=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E7=9A=84view=E3=80=81litem=5Flist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/excel_preview_table.html | 84 ++++++++----------- excel_parser/views.py | 38 ++++++++- templates/items_list.html | 1 - 3 files changed, 73 insertions(+), 50 deletions(-) diff --git a/excel_parser/templates/excel_preview_table.html b/excel_parser/templates/excel_preview_table.html index 29fd32c..16bd00e 100644 --- a/excel_parser/templates/excel_preview_table.html +++ b/excel_parser/templates/excel_preview_table.html @@ -4,7 +4,6 @@ - Excel解析工具 @@ -21,64 +20,53 @@ +
- + -
+
+ diff --git a/excel_parser/views.py b/excel_parser/views.py index 6d3a5be..36bd58b 100644 --- a/excel_parser/views.py +++ b/excel_parser/views.py @@ -3,7 +3,7 @@ from datetime import datetime from django.contrib.auth.decorators import login_required from django.contrib.staticfiles import finders -from django.http import HttpResponseBadRequest, JsonResponse, FileResponse, HttpResponseNotFound +from django.http import JsonResponse, FileResponse from django.shortcuts import render from django.urls import reverse from openpyxl.reader.excel import load_workbook @@ -40,10 +40,30 @@ def dl_excel_tpl(request, template_name): @login_required def common_parse(request): + """ + 处理上传的 Excel 文件,与模板对比表头并解析数据。 + + 如果请求方法为 POST,会执行以下步骤: + 1. 获取上传的 Excel 文件和模板名称。 + 2. 加载上传的 Excel 文件并获取其表头。 + 3. 找到并加载对应的模板文件,获取模板表头。 + 4. 对比上传文件和模板的表头,若不一致则返回错误信息。 + 5. 解析上传文件中的数据,处理 datetime 对象并过滤空行。 + 6. 将解析后的数据存储在会话中。 + 7. 返回预览页面的 URL。 + + 参数: + request (HttpRequest): Django 的 HttpRequest 对象,包含请求的详细信息。 + + 返回: + JsonResponse: JSON 响应,包含预览页面的重定向 URL 或错误信息。 + """ if request.method == 'POST': + # 获取上传的 Excel 文件和模板名称 excel_file = request.FILES['file'] template_name = request.POST.get('template_name') + # 加载上传的 Excel 文件 wb = load_workbook(excel_file) sheet = wb.active @@ -89,7 +109,23 @@ def common_parse(request): @login_required def excel_preview(request): + """ + 预览 Excel 文件的视图函数。该函数从会话中获取列名和表格数据,并将其渲染到 HTML 模板中。 + + 预期的会话数据: + - 'columns': 包含列名的列表。 + - 'table_data': 包含表格数据的列表。 + + 参数: + request (HttpRequest): Django 的 HttpRequest 对象,包含请求的详细信息。 + + 返回: + HttpResponse: 渲染 'excel_preview_table.html' 模板,并包含会话中的列名和表格数据。 + """ + # 从会话中获取列名列表 columns = request.session.get('columns', []) + # 从会话中获取表格数据列表 table_data = request.session.get('table_data', []) + # 渲染 HTML 模板 'excel_preview_table.html',并传递列名和表格数据 return render(request, 'excel_preview_table.html', {'columns': columns, 'table_data': table_data}) diff --git a/templates/items_list.html b/templates/items_list.html index 3d055cb..f3e9514 100644 --- a/templates/items_list.html +++ b/templates/items_list.html @@ -138,7 +138,6 @@ -