如何使用 flask 在 html 中在网站上显示 Excel 文件?

How to display an Excel file on a website in html using flask?

提问人:Chārry 提问时间:10/25/2023 最后编辑:Chārry 更新时间:10/25/2023 访问量:75

问:

我正在创建一个 html 和 flask 网站,您可以将 xlsx 文件上传到该网站。我需要这样做,以便我可以查看此文件的工作表。我已经创建了一个文件添加,并将其工作表的名称输出到数据列表中。现在,我需要从列表中选择所需的工作表以在同一页面上显示它。如何实现?(最好在 Python 中,或者在极端情况下与 js 一起使用,仅在 js 上。 这是我的 python 代码。

from flask import Flask, render_template, request, jsonify
from fileinput import filename
import pandas as pd

app = Flask(__name__)

@app.route('/initialization', methods=['GET','POST'])
def readfile():
    file = request.files['file']
    file.save(file.filename)
    data = pd.ExcelFile(file)
    return render_template('readfile.html',sheets = data.sheet_names)

if __name__ == '__main__':
    app.run(debug=True)

HTML格式:

   <input type="text" name="sheet" list="sheet_list" placeholder="Choose sheet">
        <datalist id="sheet_list">
              {% for sheet in sheets %}
               <option>{{sheet}}</option>
              {% endfor %}
        </datalist>
python html excel 烧瓶

评论


答:

1赞 neelrast 10/25/2023 #1

如果我正确理解了您的问题,您正在尝试阅读上传的 Excel 文件,让用户选择一个工作表,然后显示其内容。

我相信,您只需进行最少的修改即可做到这一点,您可以从列表中选择一个工作表并在新页面或同一页面上显示其内容。

首先,更新您的 HTML 表单以包含提交按钮:

<form action="/display_sheet" method="post">
    <input type="text" name="sheet" list="sheet_list" placeholder="Choose sheet">
    <datalist id="sheet_list">
        {% for sheet in sheets %}
            <option>{{sheet}}</option>
        {% endfor %}
    </datalist>
    <input type="submit" value="Display Sheet">
</form>

其次,在 Flask 应用程序中创建一个新路由来处理工作表显示:

@app.route('/display_sheet', methods=['POST'])
def display_sheet():
    selected_sheet = request.form['sheet']  # Get the selected sheet from the form
    file = request.files['file']
    file.save(file.filename)
    data = pd.read_excel(file, sheet_name=selected_sheet)  # Read the selected sheet

    # Pass the data to the template for rendering
    return render_template('display_sheet.html', sheet_name=selected_sheet, sheet_data=data.to_html())

最后,创建一个用于显示工作表的新模板,例如:display_sheet.html

<!DOCTYPE html>
<html>
<head>
    <title>Display Sheet</title>
</head>
<body>
    <h2>Sheet: {{ sheet_name }}</h2>
    {{ sheet_data | safe }}
</body>
</html>

在此模板中,我们用于显示所选工作表的名称,并显示工作表数据的 HTML 表格表示形式。使用对于避免 HTML 转义很重要。{{ sheet_name }}{{ sheet_data | safe }}| safe

通过这些更改,当您通过选择工作表提交表单时,它将调用路由,该路由将从上传的 Excel 文件中读取所选工作表并将其显示在新页面上。/display_sheet

您可以随时根据自己的要求调整模板和样式。

此外,您可能希望添加错误处理,以避免所选工作表在 Excel 文件中不存在的情况。

评论

0赞 neelrast 10/25/2023
有关 pandas 中to_html功能的更多参考,请参阅此处:pandas.pydata.org/docs/reference/api/...