读取数据对象的单元格内容
read cells content of dataobject
我使用 javascript 代码读取了一个 csv 文件,我想将它推入一个二维数组以便进行一些处理
var dataArray = new Array;
function parseCSV(dataArray) {
//replace UNIX new lines
data = data.replace(/\r\n/g, "\n");
//replace MAC new lines
data = data.replace(/\r/g, "\n");
//split into rows
var rows = data.split("\n");
// loop through all rows
for (var i = 0; i < rows.length; i++) {
// this line helps to skip empty rows
if (rows[i]) {
// our columns are separated by comma
var column = rows[i].split(",");
var date=column[0];
var value = column[4];
// create object which contains all these items:
var dataObject = {
date: date,
T4: value
};
dataArray.push(dataObject);
}
}
}
}
作为测试,我尝试读取单元格内容并显示在网页上以验证我是否读取了文件。
<script type="text/javascript">
var x= dataArray[1][4];
document.write(x);
</script>
但它没有显示任何内容。
谁能帮忙??
var dataArray = new Array;
var data = "Date,Description,Created By,Modified By,T4 Tag\n";
data += "20170424,This is record 1,user1,none,Just work please.\n";
data += "20170424,This is record 2,user2,none,I'm trying too.\n";
function parseCSV(dataArray) {
//replace UNIX new lines
data = data.replace(/\r\n/g, "\n");
//replace MAC new lines
data = data.replace(/\r/g, "\n");
//split into rows
var rows = data.split("\n");
// loop through all rows
for (var i = 0; i < rows.length; i++) {
// this line helps to skip empty rows
if (rows[i]) {
// our columns are separated by comma
var column = rows[i].split(",");
var date=column[0];
var value = column[4];
// create object which contains all these items:
var dataObject = {
date: date,
T4: value
};
dataArray.push(dataObject);
}
}
}
parseCSV(dataArray);
由于缺少文件,我将一些CSV数据强制转换为字符串进行处理。
您的问题没有显示这两项:
- 你是如何设置的 var data
- 你如何调用 parseCSV(dataArray)
如果这两件事都存在,一切都应该有效 - Here's the proof
至于 html 脚本部分:
你的数组寻址看起来不对 - 它看起来应该是这样的:
<script>
var x = dataArray[1].T4;
document.write(x);
</script>
这是我的推理:
我了解到您正在将 CSV 数据传递给此函数以将其解析为您的 dataArray 变量 - 对吗?
如果正确,这些数据看起来就像我手动添加的(我直接添加它只是为了处理某些事情)。
更大的项目与其说是数据的来源,不如说是它最终被这个 parseCSV 函数解析。
发生这种情况时,您将通过以下方式向空 dataArray 变量添加附加内容:
对于第一遍,这将如下所示:
[{"date" : "Date", "T4" : "T4 Tag"}]
第二遍:
[{"date":"Date","T4":"T4 Tag"},{"date":“20170424”,"T4":"Just work please."}]
第三关:
[{"date":"Date","T4":"T4 Tag"},{"date":“20170424”,"T4":"Just work please."},{"date":“20170424”,"T4":"I\'m trying too."}]
所以现在当您在 html 代码部分时,您没有地址键 [4] .
您的代码表示:
var x = dataArray[1][4];
考虑以下内容以了解我的意思:
var record = dataArray[1];
//{"date" : "20170424", "T4" : "Just work please."}
//There is no key 4 here only date & T4.
var date = record.date;//returns: "20170424"
var t4 = record.T4;//returns: "Just work please."
相比之下,如果您有以下内容 - 您的方法会奏效
myObj = {"date" : "20170424", "4" : "This is a value for field 4", "T4" : "Just work please."}
myObj[4];//returns "This is a value for field 4";
希望这解释得够清楚了。
这里是加载csv文件的函数
function loadCSV(file) {
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari
var request = new XMLHttpRequest();
} else {
// code for IE6, IE5
var request = new ActiveXObject('Microsoft.XMLHTTP');
}
// load
request.open('GET', file, false);
request.send();
parseCSV(dataArray);
}
我使用 javascript 代码读取了一个 csv 文件,我想将它推入一个二维数组以便进行一些处理
var dataArray = new Array;
function parseCSV(dataArray) {
//replace UNIX new lines
data = data.replace(/\r\n/g, "\n");
//replace MAC new lines
data = data.replace(/\r/g, "\n");
//split into rows
var rows = data.split("\n");
// loop through all rows
for (var i = 0; i < rows.length; i++) {
// this line helps to skip empty rows
if (rows[i]) {
// our columns are separated by comma
var column = rows[i].split(",");
var date=column[0];
var value = column[4];
// create object which contains all these items:
var dataObject = {
date: date,
T4: value
};
dataArray.push(dataObject);
}
}
}
}
作为测试,我尝试读取单元格内容并显示在网页上以验证我是否读取了文件。
<script type="text/javascript">
var x= dataArray[1][4];
document.write(x);
</script>
但它没有显示任何内容。 谁能帮忙??
var dataArray = new Array;
var data = "Date,Description,Created By,Modified By,T4 Tag\n";
data += "20170424,This is record 1,user1,none,Just work please.\n";
data += "20170424,This is record 2,user2,none,I'm trying too.\n";
function parseCSV(dataArray) {
//replace UNIX new lines
data = data.replace(/\r\n/g, "\n");
//replace MAC new lines
data = data.replace(/\r/g, "\n");
//split into rows
var rows = data.split("\n");
// loop through all rows
for (var i = 0; i < rows.length; i++) {
// this line helps to skip empty rows
if (rows[i]) {
// our columns are separated by comma
var column = rows[i].split(",");
var date=column[0];
var value = column[4];
// create object which contains all these items:
var dataObject = {
date: date,
T4: value
};
dataArray.push(dataObject);
}
}
}
parseCSV(dataArray);
由于缺少文件,我将一些CSV数据强制转换为字符串进行处理。 您的问题没有显示这两项:
- 你是如何设置的 var data
- 你如何调用 parseCSV(dataArray)
如果这两件事都存在,一切都应该有效 - Here's the proof
至于 html 脚本部分:
你的数组寻址看起来不对 - 它看起来应该是这样的:
<script>
var x = dataArray[1].T4;
document.write(x);
</script>
这是我的推理:
我了解到您正在将 CSV 数据传递给此函数以将其解析为您的 dataArray 变量 - 对吗?
如果正确,这些数据看起来就像我手动添加的(我直接添加它只是为了处理某些事情)。
更大的项目与其说是数据的来源,不如说是它最终被这个 parseCSV 函数解析。
发生这种情况时,您将通过以下方式向空 dataArray 变量添加附加内容:
对于第一遍,这将如下所示:
[{"date" : "Date", "T4" : "T4 Tag"}]
第二遍:
[{"date":"Date","T4":"T4 Tag"},{"date":“20170424”,"T4":"Just work please."}]
第三关:
[{"date":"Date","T4":"T4 Tag"},{"date":“20170424”,"T4":"Just work please."},{"date":“20170424”,"T4":"I\'m trying too."}]
所以现在当您在 html 代码部分时,您没有地址键 [4] .
您的代码表示:
var x = dataArray[1][4];
考虑以下内容以了解我的意思:
var record = dataArray[1];
//{"date" : "20170424", "T4" : "Just work please."}
//There is no key 4 here only date & T4.
var date = record.date;//returns: "20170424"
var t4 = record.T4;//returns: "Just work please."
相比之下,如果您有以下内容 - 您的方法会奏效
myObj = {"date" : "20170424", "4" : "This is a value for field 4", "T4" : "Just work please."}
myObj[4];//returns "This is a value for field 4";
希望这解释得够清楚了。
这里是加载csv文件的函数
function loadCSV(file) {
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari
var request = new XMLHttpRequest();
} else {
// code for IE6, IE5
var request = new ActiveXObject('Microsoft.XMLHTTP');
}
// load
request.open('GET', file, false);
request.send();
parseCSV(dataArray);
}