使用Javascript从文本文件创建HTML表?

时间:2013-08-12 17:10:41

标签: javascript html-table text-files

我甚至不知道我的项目是否可行。在环顾了几个小时并阅读其他Stack Overflow问题后,我的希望正在慢慢减少,但它不会阻止我提出要求!

我的项目:创建一个简单的HTML表格,为我的上司分类我们的销售团队电话活动。目前我需要从文件中提取数据值并在表中使用这些值。

我的问题:Javascript甚至可以这样做吗?我知道它在客户端计算机上读取cookie,但是它能读取与网页相同的目录中的文件吗? (如果网页在公司服务器上?)

我的进度:我会在找到更多信息时进行更新。

更新:你们中的许多人都对如何存储文件感到好奇。它是我们文件服务器上的静态网页(table.html)。文本文件(data.txt)将位于同一目录中。

6 个答案:

答案 0 :(得分:1)

我最近完成了一个项目,其中我几乎拥有与您自己相同的条件(唯一的区别是用户专门使用IE)。

我最终使用了JQuery的$.ajax()函数,并从XML文件中提取数据。

此解决方案需要使用Microsoft Access或Excel。我早在2003版本就使用过,但后来的版本工作得很好。

我的数据保存在Access的表格中(在Excel上我使用了一个列表)。在Access中创建表后;它实际上就像点击'Export'一样简单,保存为XML然后使用'ajax()'函数(http://api.jquery.com/jQuery.ajax/)来操作你想要输出的数据,然后是CSS / HTML页面布局。

我建议使用Access,因为以正确的方式导出XML的麻烦较少,尽管Excel可以更好地修改它。

以下是ms-access的步骤:

在访问权限中创建表格&以XML格式导出

enter image description here

生成的XML将如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation="Calls.xsd" generated="2013-08-12T19:35:13">
<Calls>
    <CallID>1</CallID>
    <Advisor>Jenna</Advisor>
    <AHT>125</AHT>
    <Wrap>13</Wrap>
    <Idle>6</Idle>
</Calls>
<Calls>
    <CallID>3</CallID>
    <Advisor>Edward</Advisor>
    <AHT>90</AHT>
    <Wrap>2</Wrap>
    <Idle>4</Idle>
</Calls>
<Calls>
    <CallID>2</CallID>
    <Advisor>Matt</Advisor>
    <AHT>246</AHT>
    <Wrap>11</Wrap>
    <Idle>5</Idle>
</Calls>

示例HTML

<table id="doclib">
    <tr><th>Name</th><th>AHT</th><th>Wrap</th><th>Idle</th></tr>
</table>

<强> jQuery的:

$(document).ready(function(){
$.ajax({
    type: "GET",
    url: "Calls.xml",
    dataType: "xml",
    success: function(xml) {
        $(xml).find('Calls').each(function(){
            var advisor = $(this).find('Advisor').text(),
                aht = $(this).find('AHT').text(),
                wrap = $(this).find('Wrap').text(),
                idle = $(this).find('Idle').text(),
                td = "<td>",
                tdc = "</td>";
            $('#doclib').append("<tr>" + 
                td + advisor + tdc + td + aht + tdc + td + wrap + tdc + td + idle + tdc + "</tr>")  
            });
        }
    });
});

答案 1 :(得分:0)

由于安全原因,JavaScript无法自动读取文件。

您有两种选择:

  • 如果你可以依赖IE使用,你可以使用一些花哨的ActiveX东西。

  • 使用后端,该后端可以不断地将数据推送到JS客户端或提供有关拉取请求的数据。

答案 2 :(得分:0)

如果您使用Node.js,PHP等构建服务器,这可能会有效。

JavaScript可以使用Ajax协议读取文件,但这意味着您需要服务器。

否则您的请求将通过不支持Ajax的file://协议。

答案 3 :(得分:0)

您可以尝试查看FileReader: https://developer.mozilla.org/en-US/docs/Web/API/FileReader

The FileReader object lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer

我从来没有亲自让它正常工作,但它应该能够允许这种事情。

答案 4 :(得分:0)

在IE 5或IE 6中尝试使用XMLHttpRequest或ActiveXObject。

您可以在这里找到解释:

http://www.w3schools.com/xml/xml_http.asp

或者试试这个例子:

http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

答案 5 :(得分:0)

听起来你只想从服务器获取静态文件的内容;是对的吗?如果这就是你需要做的事情,那你很幸运。这很容易。

load('textTable.txt', function(err, text) {
    buildTable(text);
});

function load(url, callback) {  
    var xhr = new XMLHttpRequest();  

    xhr.onreadystatechange = function() {
        if (xhr.readyState < 4) return;

        if (xhr.status !== 200) {  
            return callback('HTTP Status ' + xhr.status);
        }  

        if (xhr.readyState === 4) {  
            callback(null, xhr.responseText);  
        }             
    };

    xhr.open('GET', url, true);  
    xhr.send('');  
}

如果你选择qwest,它看起来像这样:

qwest.get('textTable.txt').success(function(text) {
    buildTable(text);
});

使用jQuery:

jQuery.get('textTable.txt', function(text) {
    buildTable(text);
});