如何使用Javascript读取本地文本文件并逐行读取?
我有一个由html+javascript制作的网页,它是演示版,我想知道如何读取本地csv文件并逐行读取,这样我就可以从csv文件中提取数据。无需jQuery:如何使用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
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);
}