【问题标题】:How to display values of excel file in a web page如何在网页中显示excel文件的值
【发布时间】:2017-05-01 00:29:11
【问题描述】:

我有 excel 文件(制表符分隔)和我想在网页中显示的内容。

样本数据集:

Group A Group B Group C Group D Group E Group F
lynx    cat zeus    zebra   smug    zebra
zebra   lump    flun    flun    kilm    lump
    zebra   cat         

我想在第一页显示数据集的链接:

link:<Dataset 1>
link:<Dataset 2>
link:<Dataset 3>

所以,例如当点击“Dataset 1”的链接时,我想显示一个下拉列表:

Group A 
Group B
Group C
Group D
Group E
Group F

然后,如果选择 A 组,则应显示该列的内容,lynx 和 zebra。

在网页上获取这些数据集的最佳和最快方法是什么?我是否也可以不为此使用数据库和网络服务器而只在网络浏览器中显示数据?

【问题讨论】:

  • 我觉得你在这里遗漏了一些东西......没有网络服务器就没有(通过互联网直播)网页。
  • 谢谢 Dhruv,我想知道是否可以选择不实时显示数据,而只是一个可以在网络浏览器中加载数据的应用程序。
  • Python 或任何其他服务器端语言都可以做到这一点。尽管要将这些程序作为网页在本地机器上运行,您仍然需要它们的特定环境。

标签: python mysql web flask


【解决方案1】:

您可以创建一个 python 脚本来为每个数据集和主数据集索引生成 静态 HTML 文件。

对于每个数据集,您可以使用tabulate 创建 HTML 格式的表格并将其保存到 HTML 文件中。 对于主索引,您可以再次使用tabulate 来创建不同数据集的 HTML 表。

对于数据集

从文件中解析数据和标题并将其写入 HTML 表格。

def parse_file(file):
    with open(file, "r") as f:
        reader = csv.DictReader(f)
        headers = reader.fieldnames
        table = []
        for row in reader:
            table.append([row[h] for h in headers]])
    return table, headers

from tabulate import tabulate
datasets = {}
for f in files:
    table, headers = parse_file(f)
    t = tabulate(table, headers, tablefmt="html")
    html_filename = "%s.html" % f
    data_sets[f] = html_filename
    with open(html_filename, "w") as f:
        f.write(t)
  • table 应该是列表的列表。每个内部列表都是表格中的一行。
  • headers 应该是每列的标题列表。

对于索引文件

table = []
for f in files:
    table.append(["<a href='%s'>%s</a>" % (datasets[f], f)])
t = tabulate(table, tablefmt="html")
with open("index.html", "w") as f:
    f.write(t)

您现在可以在浏览器中打开 index.html 并浏览数据集。

【讨论】:

  • 非常感谢@Liran Funaro。我尝试了您的解决方案,但在显示单个数据集的内容时遇到问题。索引页面没问题,我可以看到每个数据集的链接,但是单击每个数据集后,什么都没有显示。我做了一些更改,将在下面显示代码。
  • def parse_file(file): with open("Dataset1.csv", "r") as f: reader = csv.DictReader(f) headers = reader.fieldnames #headers = reader.next( ) rows = [] for row in reader: table = rows.append(row) #table = [row for row in reader] 返回表,标题
  • 我写了上面的 parse_file 函数并添加了这一行:files=glob.glob('*.csv')。也许我的功能出了点问题。
  • csv.DictReader 将每一行返回为dict。您应该首先将其转换为列表。我已将更正后的 parse_file(file) 代码添加到我的答案中。
  • 非常感谢!现在可以了。虽然我收到一个错误:NameError: name 'h' is not defined。因此将行:table.append([row[h] for j in headers]) 更改为 table.append([row[col] for col in headers])。
猜你喜欢
  • 1970-01-01
  • 2010-09-15
  • 2023-03-21
  • 2012-05-28
  • 2023-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多