Несколько таблиц на одном листе с использованием sheetJS

Я успешно использую пример с веб-сайта sheetJS, например:

/* create new workbook */
var workbook = XLSX.utils.book_new();

/* convert table 'table1' to worksheet named "Sheet1" */
var ws1 = XLSX.utils.table_to_sheet(document.getElementById('table1'));
XLSX.utils.book_append_sheet(workbook, ws1, "Sheet1");

/* convert table 'table2' to worksheet named "Sheet2" */
var ws2 = XLSX.utils.table_to_sheet(document.getElementById('table2'));
XLSX.utils.book_append_sheet(workbook, ws2, "Sheet2");

/* workbook now has 2 worksheets */

Можно ли добавить несколько таблиц HTML на одном листе? Они имеют одинаковую структуру. Я представляю, что это может быть что-то вроде этого:

/* convert 'table1', 'table2', 'table3' to single sheet named "Sheet1" */
var ws1 = XLSX.utils.table_to_sheet(document.getElementById('table1'));
var ws2 = XLSX.utils.table_to_sheet(document.getElementById('table2'));
var ws3 = XLSX.utils.table_to_sheet(document.getElementById('table3'));
XLSX.utils.book_append_sheet(workbook, {ws1, ws2, ws3}, "Sheet1");

2 ответа

Решение

Я нашел ответ по следующей ссылке:https://codepen.io/anon/pen/EebyzQ?editors=0010

Он добавляет рабочие листы в один, пропускает заголовок первого, а затем экспортирует его как лист Excel:

      function convert(){
   let tbl1 = document.getElementsByTagName("table")[0]
   let tbl2 = document.getElementsByTagName("table")[1]
      
   let worksheet_tmp1 = XLSX.utils.table_to_sheet(tbl1);
   let worksheet_tmp2 = XLSX.utils.table_to_sheet(tbl2);
      
   let a = XLSX.utils.sheet_to_json(worksheet_tmp1, { header: 1 })
   let b = XLSX.utils.sheet_to_json(worksheet_tmp2, { header: 1 })
      
   a = a.concat(['']).concat(b)
     
   let worksheet = XLSX.utils.json_to_sheet(a, { skipHeader: true })
   
   const new_workbook = XLSX.utils.book_new()
   XLSX.utils.book_append_sheet(new_workbook, worksheet, "worksheet")
   XLSX.writeFile(new_workbook, 'tmp_file.xls')
}

Вот рабочий код для трех таблиц, основанный на ответе @md Moazzem.

      function convert(section){
    
       var elt = document.getElementById('tbl_exporttable_to_xls');
       var elt2 = document.getElementById('tbl_exporttable_to_xls2');
       var elt3 = document.getElementById('tbl_exporttable_to_xls3');
       let worksheet_tmp1 = XLSX.utils.table_to_sheet(elt);
       let worksheet_tmp2 = XLSX.utils.table_to_sheet(elt2);
       let worksheet_tmp3 = XLSX.utils.table_to_sheet(elt3);
      
       let a = XLSX.utils.sheet_to_json(worksheet_tmp1, { header: 1 })
       let b = XLSX.utils.sheet_to_json(worksheet_tmp2, { header: 1 })
       let c = XLSX.utils.sheet_to_json(worksheet_tmp3, { header: 1 })
       a = a.concat(['']).concat(b)
       a = a.concat(['']).concat(c)
         
       let worksheet = XLSX.utils.json_to_sheet(a, { skipHeader: true })
    
       const new_workbook = XLSX.utils.book_new()
       XLSX.utils.book_append_sheet(new_workbook, worksheet, "worksheet")
       XLSX.writeFile(new_workbook, (section+'-Marks.xlsx')) 
}
Другие вопросы по тегам