baoyubo 1 miesiąc temu
rodzic
commit
7685765328
1 zmienionych plików z 10 dodań i 5 usunięć
  1. 10 5
      routers/api/dataManagement/__init__.py

+ 10 - 5
routers/api/dataManagement/__init__.py

@@ -223,21 +223,26 @@ async def generate_import_template(table_id: int, db: Session = Depends(get_db))
     layer_name = table_structure["layer_name"]
 
     # 创建 DataFrame column_name
-    data = [{col["column_comment"]:col['column_name']} for col in columns]
+    data = {}
+    for col in columns :
+        data[col["column_comment"]]=col['column_name']
     column_names = [col["column_comment"] for col in columns]
-    df = pd.DataFrame(data=data,columns=column_names)
+    df = pd.DataFrame(data=[data],columns=column_names)
 
     # 将 DataFrame 转换为 Excel 文件
     output = BytesIO()
     with pd.ExcelWriter(output, engine="openpyxl") as writer:
         df.to_excel(writer, index=False, sheet_name=layer_name)
-
+    encoded_filename = f'{layer_name}导入模板.xlsx'
     # 设置响应头
     output.seek(0)
+    from urllib.parse import quote
+    encoded_filename = quote(encoded_filename, encoding='utf-8')
     headers = {
-        "Content-Disposition": f"attachment; filename=import_template_{table_structure['table_name']}.xlsx",
-            'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+        'Content-Disposition': f'attachment; filename*=UTF-8\'\'{encoded_filename}',
+        'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
     }
+
     return StreamingResponse(output, headers=headers,
                     media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")