JS-XLSX库错误

时间:2015-05-27 15:14:52

标签: javascript excel

我已将此问题发布给此库的开发人员,但也认为我会在堆栈溢出中发布此问题。所以问题是这样的:

我从此处下载了此Excel工作表并解压缩了文件:http://www.contextures.com/SampleData.zip

然后我在这里解析了Excel文件:http://oss.sheetjs.com/js-xlsx/,上传

然后将输出视为公式。

特别是比较Excel中单元格编号G2的值和公式输出。

在Excel工作表中,其F2 * E2。

在公式输出中,其G2 == 1,6

当我尝试将Excel工作表导入html表时,这会导致问题

现在如果我继续将单元格G2专门保存在Excel工作表中,然后将Excel工作表再次上传到上面的链接,它运行良好,但现在G3受到影响等等!!!!

不确定是什么导致了这个问题。

我在Windows 8环境和Chrome浏览器中尝试这个。

我正在深入研究这个库,发现这个问题的发生主要是因为变量x.f的值在文件xlsx.js中的方法sheet_to_formulae中以某种方式搞砸了导致上述问题。注意我自己插入了console.log语句来调试问题,但就是这样,所有其他代码都与存储库中的相同。



function sheet_to_formulae(sheet) {
	var cmds, y = "", x, val="";
	if(sheet == null || sheet["!ref"] == null) return "";
	var r = safe_decode_range(sheet['!ref']), rr = "", cols = [], C;
	cmds = new Array((r.e.r-r.s.r+1)*(r.e.c-r.s.c+1));
	var i = 0;
	for(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);
	for(var R = r.s.r; R <= r.e.r; ++R) {
		console.log("IN R FOR LOOP");
		rr = encode_row(R);
		for(C = r.s.c; C <= r.e.c; ++C) {
			y = cols[C] + rr;
			x = sheet[y];
			val = "";
			if(x === undefined) continue;
			if(x.f != null) val = x.f;
			else if(x.w !== undefined) val = "'" + x.w;
			else if(x.v === undefined) continue;
			else val = ""+x.v;
			console.log("X.V IS " + x.v);
			console.log("X.F IS " + x.f);
			console.log("X.W IS " + x.w);
			console.log("VAL IS " + val);
			console.log("Y IS " + y);
			cmds[i++] = y + "=" + val;
			console.log("CMDS " + cmds[i]);
		}
	}
	cmds.length = i;
	return cmds;
}
&#13;
&#13;
&#13;

然而,它仍然不是很清楚。任何指针都将非常感激。

0 个答案:

没有答案