获取行 getRow
const row = worksheet.getRow(5);// 获取第6行。如果不存在,则将返回一个新的空对象const rows = worksheet.getRows(5, 2); //获取多行,从第6行开始,获取2行const row = worksheet.lastRow; //获取最后一个可编辑的行
设置行属性
row.height = 42.5;// 设置特定的行高row.hidden = true;// 隐藏行// 为行设置大纲级别worksheet.getRow(4).outlineLevel = 0;worksheet.getRow(5).outlineLevel = 1;// 行支持一个只读字段,以指示基于 `OutlineLevel` 的折叠状态expect(worksheet.getRow(4).collapsed).to.equal(false);expect(worksheet.getRow(5).collapsed).to.equal(true);
设置值
row.getCell(1).value = 5; // A5 的值设置为5row.getCell('name').value = 'Zeb'; // B5 的值设置为 “Zeb” - 假设第2列的key是'name'row.getCell('C').value = new Date(); // C5 的值设置为当前时间// 获取行并作为稀疏数组返回// 注意:接口更改:worksheet.getRow(4) ==> worksheet.getRow(4).valuesrow = worksheet.getRow(4).values;expect(row[5]).toEqual('Kyle');// 通过连续数组分配行值(其中数组元素 0 具有值)row.values = [1,2,3];expect(row.getCell(1).value).toEqual(1);expect(row.getCell(2).value).toEqual(2);expect(row.getCell(3).value).toEqual(3);// 通过稀疏数组分配行值(其中数组元素 0 为 `undefined`)const values = []values[5] = 7;values[10] = 'Hello, World!';row.values = values;expect(row.getCell(1).value).toBeNull();expect(row.getCell(5).value).toEqual(7);expect(row.getCell(10).value).toEqual('Hello, World!');// 使用列键key按对象分配行值row.values = {id: 13,name: 'Thing 1',dob: new Date()};
遍历行中的单元格
// 遍历工作表中具有值的所有行worksheet.eachRow(function(row, rowNumber) {console.log('Row ' + rowNumber + ' = ' + JSON.stringify(row.values));});// 遍历工作表中的所有行(包括空行)worksheet.eachRow({ includeEmpty: true }, function(row, rowNumber) {console.log('Row ' + rowNumber + ' = ' + JSON.stringify(row.values));});// 连续遍历所有非空单元格row.eachCell(function(cell, colNumber) {console.log('Cell ' + colNumber + ' = ' + cell.value);});// 遍历一行中的所有单元格(包括空单元格)row.eachCell({ includeEmpty: true }, function(cell, colNumber) {console.log('Cell ' + colNumber + ' = ' + cell.value);});
插入分页符 addPageBreak
row.addPageBreak(); // 在该行下方插入一个分页符
行尺寸 cellCount
const rowSize = row.cellCount; // 行尺寸const numValues = row.actualCellCount; // 行实际尺寸
追加行 addRow
worksheet.addRow([3, 'Sam', new Date()]); ////从最后一行添加行,一个逗号对应一个单元格//从最后一行添加行,根据列key设置值,worksheet.addRow({id: 1, name: 'John Doe', dob: new Date(1970,1,1)});worksheet.addRow({id: 2, name: 'Jane Doe', dob: new Date(1965,1,7)});// 零散插入值,也是从最后一行插入const rowValues = [];rowValues[1] = 4;rowValues[5] = 'Kyle';rowValues[9] = new Date();worksheet.addRow(rowValues);const newRow = worksheet.addRow(rowValues, 'i'); //从最后一行插入行,第二个参数是是否继承上一行的样式//默认是'n'不继承,'i'是继承上一行,'i+'是包括空行,'o'是保留原有的样式// 插入多行const rows = [[5,'Bob',new Date()],{id:6, name: 'Barbara', dob: new Date()}];worksheet.addRows(rows);
插入行 insertRow
其他参考追加行,形式一样,只是第一个参数是位置
worksheet.insertRow(1,[3, 'Sam', new Date()],'i') //从第1行上面插入行,第三个参数是样式,默认是n,参考追加行addRowworksheet.spliceRows(3, 0, Array1, Array2);//从第3行上面插入2行,行的值为Array1和Array2
删除行 spliceRows
worksheet.spliceRows(4, 3); //从第4行开始,删除3行,包括第4行const newRow3Values = [1, 2, 3, 4, 5];const newRow4Values = ['one', 'two', 'three', 'four', 'five'];worksheet.spliceRows(3, 1, newRow3Values, newRow4Values);// Cut one or more cells (cells to the right are shifted left)// Note: this operation will not affect other rowsrow.splice(3, 2);// remove one cell and insert two more (cells to the right of the cut cell will be shifted right)row.splice(4, 1, 'new value 1', 'new value 2');
