XLSX JS получает заголовок столбца на основе адреса ячейки
Я использую xlsx-js с nodejs и пытаюсь прочитать лист xlsx в формате календаря. Где 1 означает, что активность произошла в течение этого дня. Я могу пройтись по каждой строке, чтобы увидеть, является ли она неопределенной или нет, но как мне выполнить цикл, чтобы обнаружить заголовок этой ячейки?
Вот пример листа формата календаря, который я пытаюсь прочитать
Я пытался преобразовать лист в json, но json бесполезен, потому что он не мог обнаружить ячейку заголовка каждого дня, который был отмечен.
Код:
let fileName = `example.xlsx`;
try {
let workbook = XLSX.readFile(`./excel/${fileName}`, {cellDates:true});
} catch (err) {
logger.log('error', err);
}
let first_sheet_name = workbook.SheetNames[0];
/* Get worksheet */
var worksheet = workbook.Sheets[first_sheet_name];
var jsonWorksheet = XLSX.utils.sheet_to_json(worksheet);
console.log(jsonWorksheet);
2 ответа
Что я делаю, чтобы сделать это для JSON:
var file = "D:/excel.xlsx";
const workbook = XLSX.readFile(file, { cellDates:true, cellNF:false});
const sheet_name_list = workbook.SheetNames;
var va= XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]])
Вы можете получить значения заголовка, используя regex и sheet_to_formulae :
function getSheetHeaders(sheet: WorkSheet) {
const headerRegex = new RegExp('^([A-Za-z]+)1=\'(.*)$');
const cells = XLSX.utils.sheet_to_formulae(sheet);
return cells.filter(item => headerRegex.test(item)).map(item => item.split("='")[1]);
}