From 42078fb69c68c5e88ff02ce443ea1c0e0ce6ae3e Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 18 May 2017 18:46:34 +0300 Subject: [PATCH 1/3] printTitlesRow support --- lib/xlsx/xform/book/workbook-xform.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/xlsx/xform/book/workbook-xform.js b/lib/xlsx/xform/book/workbook-xform.js index 35e922a87..217e12f91 100644 --- a/lib/xlsx/xform/book/workbook-xform.js +++ b/lib/xlsx/xform/book/workbook-xform.js @@ -60,6 +60,17 @@ utils.inherits(WorkbookXform, BaseXform, { }; printAreas.push(definedName); } + if (sheet.pageSetup && sheet.pageSetup.printTitlesRow) { + + var titlesRows = sheet.pageSetup.printTitlesRow.split(':'); + + var definedName = { + name: '_xlnm.Print_Titles', + ranges: ['\'' + sheet.name + '\'!$' + titlesRows[0] + ':$' + titlesRows[1]], + localSheetId: index + }; + printAreas.push(definedName); + } index++; }); if (printAreas.length) { From b031251521d88a12ecd38539a9fb318f2fe77b00 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 19 May 2017 08:43:28 +0300 Subject: [PATCH 2/3] printTitlesRow added --- README.md | 5 ++++- lib/xlsx/xform/book/workbook-xform.js | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c9a1449e2..469ad5727 100644 --- a/README.md +++ b/README.md @@ -270,6 +270,9 @@ worksheet.pageSetup.margins = { // Set Print Area for a sheet worksheet.pageSetup.printArea = 'A1:G20'; +// Repeat specific rows on every printed page +worksheet.pageSetup.printTitlesRow = '1:3'; + ``` **Supported pageSetup settings** @@ -1712,4 +1715,4 @@ If any splice operation affects a merged cell, the merge group will not be moved | 0.4.2 | | | 0.4.3 | | | 0.4.4 | | -| 0.4.6 | | +| 0.4.6 | | \ No newline at end of file diff --git a/lib/xlsx/xform/book/workbook-xform.js b/lib/xlsx/xform/book/workbook-xform.js index 217e12f91..5711a642c 100644 --- a/lib/xlsx/xform/book/workbook-xform.js +++ b/lib/xlsx/xform/book/workbook-xform.js @@ -66,6 +66,7 @@ utils.inherits(WorkbookXform, BaseXform, { var definedName = { name: '_xlnm.Print_Titles', + ranges: ['\'' + sheet.name + '\'!$' + titlesRows[0] + ':$' + titlesRows[1]], localSheetId: index }; From d5a76135ca9ce7ce6ea1bf900c9522ce9f05fd98 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 19 May 2017 09:20:56 +0300 Subject: [PATCH 3/3] test printTitlesRow --- test/testWbXform.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 test/testWbXform.js diff --git a/test/testWbXform.js b/test/testWbXform.js new file mode 100644 index 000000000..76160e45a --- /dev/null +++ b/test/testWbXform.js @@ -0,0 +1,28 @@ + +var Excel = require('../excel'); + +var filename = process.argv[2]; + +var wb = new Excel.Workbook(); + +var ws = wb.addWorksheet('printHeader'); + + +ws.getCell('A1').value = 'This is a header row repeated on every printed page'; +ws.getCell('B2').value = 'This is a header row too'; + +for (var i=0 ; i < 100 ; i++){ + ws.addRow(['not header row']); +}; + + +ws.pageSetup.printTitlesRow = '1:2'; + + +wb.xlsx.writeFile(filename) + .then(function() { + console.log('Done.'); + }) + .catch(function(error) { + console.log(error.message); + }); \ No newline at end of file