【问题标题】:display contents of csv file in html page在html页面中显示csv文件的内容
【发布时间】:2017-08-01 15:21:42
【问题描述】:

我有一个独立的 HTML 页面(没有网络服务器),我正在使用一些 javascript 代码来显示页面中 .csv 文件的内容。

.csv 文件包含我希望显示的用户名列表。我这样做是因为需要更新列表的人对 HTML 一无所知,并且最初认为这是一种更简单的方法。

我找到的所有代码 sn-ps 要么尝试上传文件,然后只显示内容,直到您再次重新加载页面,或者我没有足够的知识来调整代码以使其工作。

任何帮助表示赞赏和 TYIA

安迪

@Barthy 代码与我想要的非常接近:

<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <style>
            table {
            border-collapse: collapse;
            border: 2px black solid;
            font: 12px sans-serif;
            }
            td {
            border: 1px black solid;
            padding: 5px;
            }
        </style>
    </head>
    <body>
        <div id='container'></div>
        <script type="text/javascript"charset="utf-8">
        var data = 'heading1,heading2,heading3,heading4,heading5\nvalue1_1,value2_1,value3_1,value4_1,value5_1\nvalue1_2,value2_2,value3_2,value4_2,value5_2';
        var lines = data.split("\n"),
        output = [],
        i;
        for (i = 0; i < lines.length; i++)
        output.push("<tr><td>"
        + lines[i].slice(0,-1).split(",").join("</td><td>")
        + "</td></tr>");
        output = "<table>" + output.join("") + "</table>";
        var div = document.getElementById('container');

        div.innerHTML = output;
        </script>
   </body>
</html>

但想从 CSV 文件中获取数据

@cars10 csv 文件中的示例:

Heading_1,Heading_2,Heading_3,Heading_4
John,     Smith,    29,       Male
Andy,     Jones,    32,       Male
Abbey,    Stewart,  35,       Female

如果有帮助的话

目前的解决方案:

<!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        <style>
            table {
            border-collapse: collapse;
            border: 2px black solid;
            font: 12px sans-serif;
            }
            td {
            border: 1px black solid;
            padding: 5px;
            }
        </style>

        <script>
            window.onload=function(){ with (new XMLHttpRequest()) {
            onreadystatechange=cb; open('GET','data.csv',true); responseType='text';send();
            }}
            function cb(){if(this.readyState===4)document.getElementById('main')
                                         .innerHTML=tbl(this.responseText); }
            function tbl(csv){ // do whatever is necessary to create your   table here ...
            return csv.split('\n')
            .map(function(tr,i){return '<tr><td>'
                                 +tr.replace(/\t/g,'</td><td>')
                                 +'</td></tr>';})
        .join('\n'); }
        </script>
        </head>
        <body>
            <h2>Hey, this is my fabulous "dynamic" html page!</h2>
            <table id="main"></table>
        </body>
    </html>

【问题讨论】:

  • 你有示例代码吗? csv 文件到底长什么样?你到底试过什么?我们可以帮助解决具体问题,现在您需要为您完成所有工作。
  • CSV文件的内容有变化吗?
  • @Barthy 添加了我最近的代码,尽管我需要使用名为 data.csv 的 .csv 文件中的内容填充“数据”
  • @NisargShah csv 文件仅在添加新用户时才会更改
  • @madmiddle 所以你唯一的问题是从 csv 文件而不是字符串中获取内容?

标签: javascript html csv


【解决方案1】:

这是一个完整的工作示例(甚至可以在本地目录上工作,即根本没有 Web 服务器!)。这是一个普通的 JavaScript 解决方案。就个人而言,我总是会使用 jquery,但在这种简单的情况下,你可以不用它。

页面需要同一目录中的 csv 文件(“csv.txt”)。但您可以在 oReq.open() 行中指定另一个(相对)路径。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
window.onload=function(){ with (new XMLHttpRequest()) {
  onreadystatechange=cb; open('GET','csv.txt',true); responseType='text';send();
}}
function cb(){if(this.readyState===4)document.getElementById('main')
                                             .innerHTML=tbl(this.responseText); }
function tbl(csv){ // do whatever is necessary to create your table here ...
 return csv.split('\n')
           .map(function(tr,i){return '<tr><td>'
                                     +tr.replace(/\t/g,'</td><td>')
                                     +'</td></tr>';})
           .join('\n'); }
</script>
</head>
<body>
<h2>Hey, this is my fabulous "dynamic" html page!</h2>
<table id="main"></table>
</body>
</html>

我的灵感来自这里:Javascript - read local text file。

【讨论】:

  • 我已经添加了通常在 csv 文件中的信息,但是我将其命名为 data.csv 如果我将 csv,txt 更改为 data.csv 会有所不同吗?它们都在同一个目录中
  • 嗯,是的,如果您使用已编辑帖子中显示的数据,我的解决方案应该可以工作。随意更改我的格式化功能tbl() 以满足您的需求!我的示例需要制表符 (\t) 来分隔字段。对于您的数据,请改用tr.replace(/,/g,'&lt;/td&gt;&lt;td&gt;')。
  • ... 当然,您可以随意命名您的文件。 data.csv 也可以!
  • 我已将样式添加到头部,但其余部分却在苦苦挣扎。我要复制 csv.split 然后用 "," 分割它吗?任何一天都给我VB,但HTML我缺乏很多知识。
  • csv 在我的代码中是保存 csv 文件内容的字符串变量的名称。 .split('\n') 是 String() 原型的一个方法。它返回一个数组,其中元素在字符串'\n' 给出的位置拆分。然后,我对 .map() 构造中该数组的每个元素执行一些操作。我将\t 的每次出现替换为'&lt;/td&gt;&lt;td&gt;',并用更多位将其包围以将其转换为'&lt;tr&gt;' 元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
相关资源
最近更新 更多