在javascript中读取excel是将长数字转换为指数
我正在使用SheetJs读取excel文件,但问题是它正在将长数字(如在javascript中读取excel是将长数字转换为指数,javascript,jquery,Javascript,Jquery,我正在使用SheetJs读取excel文件,但问题是它正在将长数字(如3577888990098转换为指数型3.52E+12) 这个问题不是重复的,因为: 文件列可以是随机的,系统不知道哪些是数字,哪些是字符串(按字母顺序),或者两者都不知道 那么如何摆脱这个呢 这是我的密码: function handleFileSelect(evt) { var files = evt.target.files; var i, f; //Loop through files
3577888990098
转换为指数型3.52E+12
)
这个问题不是重复的,因为:
文件列可以是随机的,系统不知道哪些是数字,哪些是字符串(按字母顺序),或者两者都不知道
那么如何摆脱这个呢
这是我的密码:
function handleFileSelect(evt) {
var files = evt.target.files;
var i, f;
//Loop through files
for (i = 0, f = files[i]; i != files.length; ++i) {
var name = f.name;
const reader = new FileReader();
reader.onload = (evt) => {
/* Parse data */
const bstr = evt.target.result;
const wb = XLSX.read(bstr, {type:'binary'});
/* Get first worksheet */
const wsname = wb.SheetNames[0];
const ws = wb.Sheets[wsname];
/* Convert array of arrays */
const data = XLSX.utils.sheet_to_csv(ws, {header:1});
/* Update state */
console.log("DATA>>>"+data);
};
reader.readAsBinaryString(f);
}
}
只对数字对象使用toFixed()怎么样
var x = 3577888990098;
var y = '3577888990098';
if(typeof(x) === 'number') {
x = x.toFixed(); // it will not convert it to exponential.
}
我已通过以下方式解决了这一问题:
//Assuming there will not be any "+" or "E+" in any values of sheet.
if(cell_data[cell_count].indexOf('E+') !== -1 || cell_data[cell_count].indexOf('+') !== -1) {
console.log(cell_data[cell_count] +" IS EXPONENTIAL");
fixedNumber = Number(cell_data[cell_count]) // it will not convert exponential to number.
onerow.push(fixedNumber);
}else{
onerow.push(cell_data[cell_count]);
}
因为没有JS函数来检查值是否为指数