0

代码工作正常,除了单元格为空的地方,空单元格被忽略。我知道有

  • 解决方案 1 .Condition "if(h===undefined)continue;" 在“xlsx.core.min.js”中将其注释掉。

  • 解决方案 2。通过在运行此 XLSX.utils.sheet_to_json(wb.Sheets[name] , {blankCell : false}) 时传递 Condition 额外参数。在第号行添加条件。19150 “如果(defval === undefined && 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);
                        }
                    }
4

2 回答 2

0

您可以创建 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);

您将看到空单元格作为''变量。

于 2019-12-16T14:37:22.037 回答
0

Xlsx 没有任何设置来显示第一个空行和列。但是有一个小调整可以让事情像奇迹一样工作。

const reader: FileReader = new FileReader();
  reader.onload = (e: any) => {
        const bstr: string = e.target.result;
        const wb: XLSX.WorkBook = XLSX.read(bstr, { type: 'binary',cellDates: true});
        const wsname: string = wb.SheetNames[0];
        const ws: XLSX.WorkSheet = wb.Sheets[wsname];
        let x = ws['!ref'];
        let newref = this.replaceChar(x, 'A1', 0); //B1:K4
        ws['!ref'] = newref;
        this.data = (XLSX.utils.sheet_to_json(ws, { header: 1, defval: '', blankrows: true }));
        
    };



replaceChar(origString, replaceChar, index) {
    let firstPart = origString.substr(0, index);
    let lastPart = origString.substr(index + 2);
      
    let newString = firstPart + replaceChar + lastPart;
    return newString;
}

附上excel供参考

在此处输入图像描述

于 2021-03-16T15:58:01.777 回答