請你幫我製作一個web用flask框架製作,需要實現錄入一些數據保存在本地D盤XLSL文檔中,第一個網頁是錄入數據,在左邊菜單欄需要有錄入數據和查詢數據。錄入數據有確認日期、確認班別、異常機種、異常現象、異常數量、備注...點擊查詢記錄后可以根據日期、機種、綫別進行查詢錄入的記錄.
时间: 2023-11-25 21:06:13 浏览: 88
使用Python的Flask框架来搭建第一个Web应用程序
5星 · 资源好评率100%
好的,我可以帮您实现这个需求。首先,您需要安装 Flask 和 xlwt 模块。您可以使用以下命令安装它们:
```
pip install Flask
pip install xlwt
```
然后,您可以创建一个名为 `app.py` 的 Python 文件,使用以下代码:
```python
from flask import Flask, render_template, request
import xlwt
import os
app = Flask(__name__)
# 定义保存数据的文件路径
data_file = 'D:/data.xls'
# 定义数据结构,用于存储录入的数据
data = {
'records': []
}
# 定义表头
headers = ['日期', '班别', '机种', '异常现象', '异常数量', '备注']
# 如果数据文件已存在,则读取其中的数据
if os.path.exists(data_file):
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('data')
with open(data_file, 'rb') as f:
workbook = xlwt.Workbook(file_contents=f.read())
worksheet = workbook.get_sheet(0)
for row in range(1, worksheet.nrows):
record = {}
for col in range(len(headers)):
record[headers[col]] = worksheet.cell(row, col).value
data['records'].append(record)
# 定义首页路由
@app.route('/')
def index():
return render_template('index.html')
# 定义录入数据路由
@app.route('/add', methods=['GET', 'POST'])
def add():
if request.method == 'POST':
# 获取表单数据
record = {}
for field in headers:
record[field] = request.form.get(field)
# 将数据添加到数据结构中
data['records'].append(record)
# 将数据写入文件
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('data')
for col in range(len(headers)):
worksheet.write(0, col, headers[col])
for row in range(len(data['records'])):
for col in range(len(headers)):
worksheet.write(row + 1, col, data['records'][row][headers[col]])
with open(data_file, 'wb') as f:
workbook.save(f)
return '录入成功!'
else:
return render_template('add.html')
# 定义查询数据路由
@app.route('/query', methods=['GET', 'POST'])
def query():
if request.method == 'POST':
# 获取查询条件
date = request.form.get('date')
machine = request.form.get('machine')
shift = request.form.get('shift')
# 根据查询条件过滤数据
result = []
for record in data['records']:
if (not date or record['日期'] == date) \
and (not machine or record['机种'] == machine) \
and (not shift or record['班别'] == shift):
result.append(record)
# 返回查询结果
return render_template('query_result.html', headers=headers, records=result)
else:
return render_template('query.html')
if __name__ == '__main__':
app.run()
```
在上面的代码中,我们定义了三个路由:首页路由、录入数据路由和查询数据路由。首页路由返回一个 HTML 页面,其中包含两个链接:录入数据和查询数据。录入数据路由可以接受 POST 请求,将录入的数据保存到 Excel 文件中。查询数据路由可以接受 POST 请求,根据查询条件过滤数据,并返回查询结果。
接下来,您需要创建以下 HTML 页面:
`templates/index.html`:
```html
<!DOCTYPE html>
<html>
<head>
<title>首页</title>
</head>
<body>
<h1>菜单</h1>
<ul>
<li><a href="/add">录入数据</a></li>
<li><a href="/query">查询数据</a></li>
</ul>
</body>
</html>
```
`templates/add.html`:
```html
<!DOCTYPE html>
<html>
<head>
<title>录入数据</title>
</head>
<body>
<h1>录入数据</h1>
<form method="post" action="/add">
<label>日期:</label>
<input type="text" name="日期"><br>
<label>班别:</label>
<input type="text" name="班别"><br>
<label>机种:</label>
<input type="text" name="机种"><br>
<label>异常现象:</label>
<input type="text" name="异常现象"><br>
<label>异常数量:</label>
<input type="text" name="异常数量"><br>
<label>备注:</label>
<input type="text" name="备注"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
`templates/query.html`:
```html
<!DOCTYPE html>
<html>
<head>
<title>查询数据</title>
</head>
<body>
<h1>查询数据</h1>
<form method="post" action="/query">
<label>日期:</label>
<input type="text" name="date"><br>
<label>机种:</label>
<input type="text" name="machine"><br>
<label>班别:</label>
<input type="text" name="shift"><br>
<input type="submit" value="查询">
</form>
</body>
</html>
```
`templates/query_result.html`:
```html
<!DOCTYPE html>
<html>
<head>
<title>查询结果</title>
</head>
<body>
<h1>查询结果</h1>
<table>
<thead>
<tr>
{% for header in headers %}
<th>{{ header }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for record in records %}
<tr>
{% for header in headers %}
<td>{{ record[header] }}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
```
最后,您可以在命令行中运行以下命令启动应用程序:
```
python app.py
```
在浏览器中访问 `http://localhost:5000`,您将看到一个菜单页面,可以从中选择要执行的操作。
阅读全文