代码可以正常工作,除非单元格为空,否则将忽略空单元格。我知道有
解决方案1。条件为“ if(h === undefined)continue;”在“ xlsx.core.min.js”中将其注释掉。
解决方案2。通过在运行此XLSX.utils.sheet_to_json(wb.Sheets [name],{blankCell:false})时传递Condition额外的参数。在行号上添加一个条件19150“ if(defval ===未定义&& blankCell)继续;”在文件xlsx.js等中。
但是我的项目中没有“ xlsx.core.min.js”文件,我不能对行号进行罚款。 19150为解决方案2添加编码,而且我也没有创建JSON对象。
我的代码:
onChange = (event) => {
let newRows = this.state.rows;
let files = event.target.files, f = files[0];
var reader = new FileReader();
reader.onload = (event) => {
let newRowCt = this.state.rowCt;
let newColCt = this.state.colCt;
var data = new Uint8Array(event.target.result);
var workbook = XLSX.read(data, { type: 'array' });
const sn = workbook.SheetNames[0];
const sheet = workbook.Sheets[sn];
console.log(sheet["!ref"]);
let row = 1;
let col = 0;
Object.keys(workbook.Sheets[sn]).map((cell) => {
if (sheet[cell].w !== undefined) {
if (row !== parseInt(cell.slice(1), 10)) {
row++;
col = 0;
if (row >= newRowCt) {
newRows.push([]);
for (let k = 0; k < newColCt; k++) {
newRows[row].push("");
}
newRowCt++;
console.log(newColCt);
}
}
您可以创建excel.js文件来确定您在excel中的工作,例如读取,写入,选择列等。在我的代码示例中,我是在该路径下执行的:“ ./ lib / excel.js”然后,您可以导出这些方法。这将是更好的用法。
const XLSX = require('xlsx');
const read = filePath => {
const workbook = XLSX.readFile(filePath); //it reads all excel file
const sheetnamelist = workbook.SheetNames; //it takes all sheet names
return XLSX.utils.sheet_to_json(workbook.Sheets[sheetnamelist[0]]); //it returns json from your first sheet
};
module.exports = {
read
};
然后您可以在app.js上使用此文件导入excel.js文件。
const excel = require('./lib/excel');
在下面调用您的方法代码。
const xlsx = excel.read(yourExcelFilePath);
console.log(xlsx);
您将看到空单元格为''
变量。