Блокировка Exceljs создает пустые строки - PullRequest
0 голосов
/ 12 октября 2019

Мне нужна помощь в блокировке ячеек с помощью модулей Excel JS. Я использую узел JS. Я создал несколько фиктивных строк и добавил формулу. Все, что мне нужно, это то, что пользователь может редактировать только столбцы числителя и знаменателя. Когда я перехожу в getCell (C1). Защита. Все, что делает заголовок, становится редактируемым. Если я изменю это на C2. Вставляет пустой ряд. Не уверен, что делать. Я зациклился на массиве строк и попытался заблокировать ячейку + индекс + 1. Пожалуйста, наведите меня ..

ScreenShot

Спасибо, Meet

const Excel = require('exceljs/modern.nodejs');
const workbook = new Excel.Workbook();
const worksheet = workbook.addWorksheet('ExampleSheet');

worksheet.columns = [
  { header: 'Package', key: 'package_name' },
  { header: 'Author', key: 'author_name' },
  { header: 'N', key: 'num'},
  { header: 'D', key: 'dino'},
  { header: 'Computed', key: 'computed'}
];
const rows = [
  { package_name: "FGH", author_name: "Author 4", num: 11, dino: 8, computed:{ formula: 'C2+D2' }},
  { package_name: "PQR", author_name: "Author 5", num: 10, dino: 4, computed:{ formula: 'C3+D3' }}
];

rows.forEach((el, i) => {
  console.log(`C${i+1}`)
  worksheet.getCell(`C${i+1}`).protection = {
    locked: false
  };
  worksheet.getCell(`D${i+1}`).protection = {
    locked: false
  }
});

const func = async() => {
  const res = await worksheet.protect('password', {selectUnlockedCells: true});
  console.log(res);
}
func();

worksheet
  .addRows(rows);

workbook
  .xlsx
  .writeFile('sample.xlsx')
  .then(() => {
    console.log("saved");
  })
  .catch((err) => {
    console.log("err", err);
  });
...