我以前做过一次这样的事情。进行 AJAX 调用以获取 CSV(使用 jQuery):
var x = $.ajax('schedule.csv').done( function(){parse(x);});
然后像这样解析数据:
function parse (data)
{
cells=[];
rowBreaks = [];
rowCounter=0;
var cellCounter=0;
var inQuotes = false;
y=data.responseText;
console.log(y.length);
for(n=0; n<y.length; n++)
{
if(n == 0 & y[n] != ",")
cells[cellCounter]=y[n];
if(n != 0 && y[n] != ',')
{
cells[cellCounter]+=y[n];
}
if(y[n] == '"')
inQuotes = !inQuotes;
if(n>0 && !inQuotes && y[n] == ",")
{
if(cells[cellCounter] == undefined)
cells[cellCounter] = " ";
else
cells[cellCounter]+=" ";
cellCounter++;
}
if(n>0 && !inQuotes && (y[n] == "\n" || y[n] == "\r"))
{
rowBreaks[rowCounter] = cellCounter;
rowCounter++;
}
if(cells[cellCounter] == undefined)
cells[cellCounter] = "";
}
fixRows();
writeTable();
$("body").css("overflow-x", "auto");
}
您不需要所有这些,但它会非常方便地解析 CSV 文件。如果有帮助,该writeTable()
函数如下所示:
function writeTable()
{
table=$("<table border='1' cellpadding='1' />");
var q;
var rowBlank;
var rowLength = rowBreaks[0]-8;
for(z=0; z<rowBreaks.length; z++)
{
tr = $("<tr />");
if(z == 0)
tr.addClass("header");
rowBlank = true;
for(i=0; i<rowLength; i++)
{
q=(z)*25+i;
td=$("<td />").html(cells[q]);
tr.append(td);
if(cells[q] != " " && cells[q] != "" && cells[q] != "\n" && cells[q] != "\r")
rowBlank = false;
}
/*if(!rowBlank)*/
table.append(tr);
}
table.css({
"border-spacing" : 0,
"width" : "100%",
"height" : "99%"
});
$("#schedule").html("");
$("#schedule").append(table);
sizeTable();
}
这很丑陋,但它对我有用。
注意,这都是真实的代码,所以你不需要console.log()
我用来调试的 's,或者保留任何变量名。在我让公司切换到 Google Docs 之前,这用于解析保存为 excel 文件的 80 x 20 excel 表,因此它在 CSV 文件的大小方面非常强大。