python fastapi 将上传的EXCEL 文件SHEET1表单内容转换成可用可编辑的数据结构展示在前端,含html页面
时间: 2024-09-28 12:10:43 浏览: 45
在Python中,你可以使用FastAPI作为Web框架,结合其他库如`fastapi`, `Pydantic`处理文件上传,`pandas`处理Excel数据,以及HTML模板引擎(例如Jinja2)渲染数据到前端。以下是简单的步骤:
1. **安装必要的库**:
- 安装文件处理库:`pip install starlette-files`
- 数据分析库(这里我们假设会用到):`pip install pandas`
- HTML模板渲染:`pip install jinja2`
2. **设置路由接收文件**:
```python
from fastapi import FastAPI, File, UploadFile
from starlette.responses import HTMLResponse
import pandas as pd
app = FastAPI()
@app.post("/upload_excel/")
async def upload_excel(file: UploadFile = File(...)):
# 读取Excel文件并解析Sheet1
df = pd.read_excel(file.file)
sheet1_data = df.iloc[:, :].to_dict(orient="records") # 转换为可编辑数据结构
return sheet1_data
```
3. **创建HTML模板显示数据**:
```python
from jinja2 import Template
template = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Excel Data</title>
</head>
<body>
<table>
<thead>
{{ headers }}
</thead>
<tbody>
{% for row in data %}
<tr>
{% for item in row %}
<td>{{ item }}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
"""
def render_html(data):
headers = list(data[0].keys())
template_vars = {"headers": headers, "data": data}
rendered_template = Template(template).render(**template_vars)
return rendered_template
```
4. **在请求处理器中返回HTML响应**:
```python
@app.get("/display_data/{sheet_name}")
async def display_excel(sheet_name):
uploaded_file = await get_uploaded_file() # 获取已上传文件
sheet1_data = await upload_excel(uploaded_file)
html_content = render_html(sheet1_data)
return HTMLResponse(content=html_content)
```
5. **添加辅助函数获取上传文件**:
```python
# 假设你有一个数据库或其他存储系统来保存和检索文件
async def get_uploaded_file():
# ...从数据库或临时目录加载文件...
pass
```
现在,当用户通过POST请求上传Excel文件,并访问`/display_data/sheet1`(将`sheets`替换为你实际的Sheet名称),他们将会看到包含Sheet1数据的HTML页面。
阅读全文