невозможно прочитать пустые ячейки в файле excel в массив 2d

Код работает нормально, за исключением случаев, когда ячейки пусты, пустые ячейки игнорируются. я знаю, что есть

  • решение 1. Условие «если (h === undefined) продолжить;» в "xlsx.core.min.js" закомментируйте это.

  • Решение 2 . Передав дополнительный параметр Condition при запуске этого XLSX.utils.sheet_to_json(wb.Sheets[name], {blankCell: false}). добавить условие в строке №. 19150 "if(defval === undefined &&blankCell) продолжить;" в файле xlsx.js и т.д..

Но у меня в проекте нет файла "xlsx.core.min.js", и я не могу выделить строку no. 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);
                        }
                    }

person Peishi Long    schedule 14.12.2019    source источник


Ответы (2)


Вы можете создать файл 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);

Вы увидите свои пустые ячейки как переменную ''.

person Üsame Tekinkaya    schedule 16.12.2019

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 для справки

введите здесь описание изображения

person Supriya Bhattacherjee    schedule 16.03.2021