需要上传A表和上传B表
时间: 2024-02-16 08:59:51 浏览: 18
好的,如果你需要允许用户上传 A 表和 B 表,你可以使用 Flask 框架和 Flask-WTF 扩展来实现。
首先,你需要安装 Flask 和 Flask-WTF 扩展:
```
pip install flask
pip install flask-wtf
```
然后,你可以创建一个名为 `app.py` 的 Python 文件,添加以下代码来创建一个 Flask 应用程序:
```python
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileRequired
from werkzeug.utils import secure_filename
import pandas as pd
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key_here'
# 创建上传表单
class UploadForm(FlaskForm):
file = FileField('文件', validators=[FileRequired()])
# 创建处理上传的路由
@app.route('/', methods=['GET', 'POST'])
def upload():
form = UploadForm()
if form.validate_on_submit():
# 保存上传的文件
filename = secure_filename(form.file.data.filename)
file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
form.file.data.save(file_path)
# 读取上传的 Excel 文件
df = pd.read_excel(file_path)
# 计算 A 列和 B 列数字相加
result = df['A'] + df['B']
# 返回结果页面
return render_template('result.html', result=result)
# 显示上传表单页面
return render_template('upload.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
```
在这个示例代码中,我们创建了一个名为 `UploadForm` 的 Flask-WTF 表单类,它包含一个 `FileField`,用于上传 Excel 文件。我们还创建了一个名为 `upload` 的路由,用于处理上传的文件。当用户提交表单时,我们会将上传的文件保存到服务器上,并使用 pandas 库读取它。然后,我们计算 A 列和 B 列数字的总和,并将结果传递给模板引擎,以便在结果页面中显示。
接下来,你需要创建两个 HTML 模板文件,分别用于显示上传表单和结果。在你的项目目录中创建一个名为 `templates` 的文件夹,并在其中添加以下两个文件:
`upload.html`:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传文件</title>
</head>
<body>
<h1>上传文件</h1>
<form method="POST" enctype="multipart/form-data">
{{ form.csrf_token }}
{{ form.file.label }}
{{ form.file }}
{% if form.file.errors %}
<ul>
{% for error in form.file.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<br>
<button type="submit">提交</button>
</form>
</body>
</html>
```
`result.html`:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>结果</title>
</head>
<body>
<h1>结果</h1>
<p>两个表格的 A 列和 B 列数字相加的结果为:{{ result }}</p>
</body>
</html>
```
这些模板使用 Flask 的模板引擎 Jinja2 来生成 HTML。在上传表单中,我们使用 Flask-WTF 表单来创建一个包含文件上传字段的表单。在结果页面中,我们使用模板引擎来显示计算结果。
最后,在 `app.py` 文件中添加以下配置,以便指定上传文件的保存路径:
```python
app.config['UPLOAD_FOLDER'] = 'uploads'
```
这将在项目目录中创建一个名为 `uploads` 的文件夹,用于保存上传的文件。
现在,你可以使用以下命令启动应用程序:
```
python app.py
```
然后,访问 `http://localhost:5000/` 来上传 A 表和 B 表,并计算它们的 A 列和 B 列数字总和。