当我使用下面的方法上传文件xlsx时,我正在使用SheetJS
_file(file) {
/* Boilerplate to set up FileReader */
const reader = new FileReader();
reader.onload = (e) => {
/* Parse data */
const bstr = e.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_json(ws, {header:1});
/* Update state */
this.data = data;
this.cols = make_cols(ws['!ref']);
};
reader.readAsBinaryString(file);
}我得到了一些有数据的单元格,但它包含了一些没有数据的行,如何删除它?我只想看到有数据的行。提亚
发布于 2019-02-05 19:12:47
为了删除没有任何数据的行,您可以使用选项blankRows: false,如下所示:
const data = XLSX.utils.sheet_to_json(ws, {header:1, blankRows: false});据我所知,这个选项不能与选项defval一起使用,所以如果您想为一些空单元格提供一个默认选项,但要删除空行,则必须编写一个自定义函数。这里有一个关于这个bug的公开问题:sheet_to_json does not skip blank rows
发布于 2021-01-03 10:12:27
正如Naupad在之前的评论中提到的那样,
以小写形式设置属性blankRows all的效果与预期一致...
data = XLSX.utils.sheet_to_json(ws, {
header:1,
blankrows: false
});发布于 2021-11-15 09:49:38
我也有一个类似的问题,defval和blankrows不符合我的条件,因为defval也读取带有边框的空行,而blankrows跳过一行中的空单元格,所以我创建了一些函数来迭代输出sheetdata到一个新的数据数组中,见下文。
// body...
/* var sd= XLSX.utils.sheet_to_json(ws,{header:1,defval:""}); */
/* var sheetdata = sheetjs_cleanEmptyRows(sd) */
function sheetjs_cleanEmptyRows(sd) {
const data = []
for (var row = 0; row < sd.length; row++) {
var i = sd[row].length;
var j = 0;
for ( var cell = 0; cell < sd[row].length; cell++){
if (sd[row][cell].length == 0 ) { j++}
}
if (j < i) {
data.push(sd[row]);
}
}
return data;
}https://stackoverflow.com/questions/52715836
复制相似问题