python fastapi 将excel文件中Sheet1表单内容,以可编辑的方式显示在html上,且点击保存,更新源文件
时间: 2024-09-28 12:13:54 浏览: 17
在Python中,你可以使用FastAPI作为Web框架,配合Flask-SocketIO实现实时交互,将Excel表格数据展示在HTML页面上,并通过前端事件处理如AJAX来实现在浏览器端的编辑和保存功能。这里我们简要概述步骤:
1. **安装所需库**:
- `fastapi`
- `uvicorn` (FastAPI的服务器)
- `flask-sqlalchemy` 或 `pandas` (用于读取和操作Excel)
- `jinja2` (模板引擎,用于渲染HTML)
- `python-multipart` (处理POST请求中的文件)
```bash
pip install fastapi uvicorn flask-sqlalchemy jinja2 python-multipart openpyxl
```
2. **读取Excel并存储数据**:
使用`openpyxl`库加载Excel数据:
```python
from fastapi import FastAPI
import pandas as pd
app = FastAPI()
async def load_excel(file):
df = pd.read_excel(file, sheet_name="Sheet1")
return df
```
3. **创建HTML模板**:
使用Jinja2创建一个可以编辑的表格模板:
```html
<template>
<form id="edit-form">
<table>
{{ for row in data }}
<tr>
<!-- 这里遍历DataFrame中的每一行 -->
<td contenteditable>{{ row['Column1'] }}</td> <!-- 请替换为实际列名 -->
<!-- 添加更多单元格 -->
</tr>
{{ endfor }}
</table>
<button type="submit">Save</button>
</form>
</template>
```
4. **处理前端提交**:
使用Flask-SocketIO监听表单提交事件,在客户端编辑数据后发送到服务器,服务器更新数据库(假设使用SQLAlchemy):
```python
from fastapi.responses import HTMLResponse
from flask_socketio import SocketIO
socket_io = SocketIO(app)
@app.post("/save/")
async def save_excel(request: UploadFile = File(...)):
# 读取用户输入并更新数据
...
# 更新数据库或其他持久化层
...
return HTMLResponse(content=jinja2.Template(html_template).render(data=df), status_code=200)
```
5. **运行服务**:
启动FastAPI和SocketIO服务器:
```bash
uvicorn main:app --reload
python -m socketio.run your_flask_sockets_app
```