3

我创建了一个 HTML 表单,它将在本地计算机上使用,并希望将表单数据保存在 CSV 文件中。

每次提交表单时,都应在 CSV 文件中添加一行。

这需要在本地运行,因此不能使用 PHP 或 JSP。

任何帮助或想法表示赞赏。

4

3 回答 3

1

我认为这是一个仅限 IE 的问题(VBScript)。如果是这样,您可以使用名为 FileSystemObject 的 ActiveXObject。

JavaScript:

csv=[]; // Collect form values to this array.

function saveFile(csv){
    var fso,oStream;
    fso=new ActiveXObject('Scripting.FileSystemObject');
    oStream=fso.OpenTextFile('absolute_file_path',8,true);
    oStream.WriteLine(csv.join(','));
    oStream.Close();
    return;
}

function readFile(path){
    var fso,iStream,n,csv=[];
    fso=new ActiveXObject('Scripting.FileSystemObject');
    iStream=fso.OpenTextFile(path,1,true);
    for(n=0;!iStream.AtEndOfStream;n++){
        csv[n]=iStream.ReadLine().split(',');
    }
    iStream.Close();
    return csv;
}

您可以在MSDN中阅读有关 FileSystemObject 的更多信息。

于 2012-07-08T08:57:30.800 回答
0

老问题,但我想用一个很好的可靠回应来更新:

另一种方法是在将运行脚本的机器上使用模拟器。这样,您就可以像托管在服务器上一样构建表单处理脚本。查看WAMP(或Mac 的MAMP),它将在您的系统上使用 PHP/MySQL 创建一个自包含运行的 Apache 实例。然后,您只需将站点的文件放入模拟器指定的目录(通常为“www”或“htdocs”),然后您可以通过浏览器在本地运行它,就好像它直接在带有 PHP/MySQL 的服务器上一样。

于 2014-03-05T18:19:50.927 回答
0

@Ekkehard.Horner 是正确的,因为浏览器无法直接写入本地文件系统。

但是,在提交表单时,如果您的浏览器启用了 JavaScript,当然可以更新浏览器窗口的另一部分。然后,如果这是您的目标,您可以将浏览器中累积的内容剪切并粘贴到文件中。

下面是我整理的一个简单示例,它仅用一点 JavaScript 和一些简单的表单元素来说明这个概念:

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Capture Form Fields to CSV</title>
<script type="text/javascript">
<!--
function saveValues() {
    var frm = document.form1;

    var record = ""
            +       frm.text1.value
            + "," + frm.text2.value
            + "," + frm.text3.value
            + "\n";

    frm.textarea1.value += record;
}

function clearText() {
    document.form1.textarea1.value = "";
}
//-->
</script>
</head>
<body>
<h1>Capture Form Fields to CSV</h1>

<form name="form1" action="javascript:null">
  <p>
    F1: <input name="text1" type="text" value="field1" /><br />
    F2: <input name="text2" type="text" value="field2"/><br />
    F3: <input name="text3" type="text" value="field3"/>
  </p>
  <p>
    <input name="save" type="button" value="Save"
           onclick="saveValues(); return false"/>
    &#0160;
    <input name="clear" type="button" value="Clear"
           onclick="clearText(); return false"/>
  </p>
  <p>
    <i>Click 'Save' to add content</i><br />
    <textarea name="textarea1" rows="5" cols="40"></textarea>
  </p>
</form>

</body>
</html>

如果您愿意使用诸如 jQuery 之类的 JavaScript 库深入研究 DHTML,那么您当然可以得到比这更有趣的东西。想想这个网站提供的奇妙的编辑模式吧!

于 2012-07-07T23:14:31.687 回答