如何使用Javascript读取本地文本文件并逐行读取?

如何使用Javascript读取本地文本文件并逐行读取?,javascript,html,file,Javascript,Html,File,我有一个由html+javascript制作的网页,它是演示版,我想知道如何读取本地csv文件并逐行读取,这样我就可以从csv文件中提取数据。无需jQuery: document.getElementById('file').onchange = function(){ var file = this.files[0]; var reader = new FileReader(); reader.onload = function(progressEvent){ // E

我有一个由html+javascript制作的网页,它是演示版,我想知道如何读取本地csv文件并逐行读取,这样我就可以从csv文件中提取数据。

无需jQuery:

document.getElementById('file').onchange = function(){

  var file = this.files[0];

  var reader = new FileReader();
  reader.onload = function(progressEvent){
    // Entire file
    console.log(this.result);

    // By lines
    var lines = this.result.split('\n');
    for(var line = 0; line < lines.length; line++){
      console.log(lines[line]);
    }
  };
  reader.readAsText(file);
};
document.getElementById('file').onchange=function(){
var file=this.files[0];
var reader=new FileReader();
reader.onload=函数(progressEvent){
//整个文件
console.log(this.result);
//排队
var lines=this.result.split('\n');
对于(var line=0;line
HTML:



记住在呈现文件字段后放入javascript代码。

使用ES6,javascript会变得更干净一些

handleFiles(input) {

    const file = input.target.files[0];
    const reader = new FileReader();

    reader.onload = (event) => {
        const file = event.target.result;
        const allLines = file.split(/\r\n|\n/);
        // Reading line by line
        allLines.forEach((line) => {
            console.log(line);
        });
    };

    reader.onerror = (event) => {
        alert(event.target.error.name);
    };

    reader.readAsText(file);
}

检查一下,您是否有任何浏览器兼容性要求?具体来说,您是否支持ie9或更少?@Hunterrarco谢谢,问题是我不知道如何从结果中获得每一行。我的意思是reader.readAsText()返回所有数据,而不是我可以逐行读取的数据line@LukeMcGregor没有要求,只支持当前版本就可以了。我有200000行(不是开玩笑,这是一个日志文件)。我不认为你的解决方案涵盖了这一点,不过很好的尝试。而且,如果返回(换行符)在引用字段内,这个解决方案也无法处理。至于Tomas,如果你有一个更高级的浏览器,你可以使用生成器逐行读取,而不必进行“拆分”。我们获取行的外部文件路径在哪里?@TomášZato mine是100行。不过我还没有测试过这个答案。。你是怎么做到的?链接到一个例子将不胜感激!万帕斯塔斯,答案是+1@gsamaras我记不清了,但我使用了一些流,逐段读取数据,然后每次遇到
\n
时都会触发事件。但对于100万行,您将在HTML中显示它们。投票赞成使用正则表达式拆分行,这是正确的方法。更简单的正则表达式:
\r?\n
很好的示例,我喜欢Windows和Unix风格的行结尾处理。非常感谢。
handleFiles(input) {

    const file = input.target.files[0];
    const reader = new FileReader();

    reader.onload = (event) => {
        const file = event.target.result;
        const allLines = file.split(/\r\n|\n/);
        // Reading line by line
        allLines.forEach((line) => {
            console.log(line);
        });
    };

    reader.onerror = (event) => {
        alert(event.target.error.name);
    };

    reader.readAsText(file);
}