【问题标题】:How do I Render dynamically an excel file in a Flask app?如何在 Flask 应用程序中动态呈现 excel 文件?
【发布时间】:2020-03-19 18:03:42
【问题描述】:

我想创建一个 Flask 应用程序来动态呈现 Excel 工作表。 我的需要如下:某人(很久以前)创建了一个复杂的 excel 文档,其中有许多表,其中包含跨表的公式。 excel的“最后一个”表显示有价值的信息(可以由服务器端的某人定期更新,比如每分钟),我想通过网络服务器进行广播。目前我正在做的(但它不起作用)是用 pandas(或 openpyxl)读取工作表并通过 Flask 应用程序呈现结果:

from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route('/', methods=('POST', 'GET'))
def index():
    html = pd.read_excel("foo.xlsx", sheetname="Sheet_1").to_html()
    return render_template('index.html', html_code=html)

在我的 html 模板中:

{% block content %}
    <h1>From excel:</h1>
    {{ html_code|safe }}
{% endblock %}

什么不起作用(从更多问题到更少): * Pandas(或 Openpyxl)不重做 excel 公式(它显示公式,而不解析它们)。有没有办法做到这一点 ? * 如何“减慢”或控制 Flask 索引页面的刷新率? * 有没有办法同时呈现 excel 表的格式? (比如边框、颜色……)

另外,我知道我的架构很笨拙,可能无法正常工作,所以如果你们有另一个简单的架构,允许某人定期编辑(比如每分钟)一个 Excel 并渲染一张表?我唯一的限制是我必须使用 excel,而且我不想每分钟都从 excel 文件中保存一个 .mht 或 .html 。

非常感谢!!

【问题讨论】:

标签: python excel flask


【解决方案1】:

由于这不是讨论不同软件架构意见的格式,因此我将尝试为您的问题的不同部分提供一些想法:

要读取 Excel 单元格的(计算的)值而不是公式,您可以例如看看这个讨论:Python reads only the formula from excel cell

要阅读 Excel 工作表的格式,您可以例如看看这个讨论:How to read excel cell and retain or detect its format in Python

关于刷新率:由于您没有在代码中使用 websockets 或任何其他异步通信,因此模板只会在客户端请求时呈现。

最后一个普遍的想法: 如果您只是在寻找一种通过 HTTP 使 Excel 工作表可用的简单方法,您可以简单地使用 Flask-Excel

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 2019-08-28
    • 2011-10-08
    • 2019-10-19
    • 1970-01-01
    • 2013-05-24
    • 2021-12-17
    • 2021-11-15
    相关资源
    最近更新 更多