Category / Section
How to print multiple sheets in JavaScript Spreadsheet?
3 mins read
This article explains how to print the multiple sheets in the JavaScript Spreadsheet component.
You can use fileMenuItemSelect and dataBound events to print the multiple sheets of data. To print the sheets, use the file menu and select print option. Using below code you can be able to print the multiple sheets.
[HTML]
<div id="spreadsheet"></div>
[TS]
let ssEle: HTMLElement = createElement("div", { className: "e-sheet-panel", innerHTML: '<div class="customItems"></div><div class="e-sheet"><div class="e-main-panel style="height:100%" style="overflow: unset"><div class="e-sheet-content" ></div></div></div>' }); // creating same hierarchy of element as DOM let isPrint: boolean = false; //Initialize Spreadsheet component let spreadsheet: Spreadsheet = new Spreadsheet({ sheets: [ { name: 'CarSalesReport', ranges: [{ dataSource: (dataSource as any).data }], // you can refer this datasource in this link https://ej2.syncfusion.com/javascript/demos/spreadsheet/default/datasource.js rows: [ { index: 30, cells: [ { index: 4, value: 'Total Amount:', style: { fontWeight: 'bold', textAlign: 'right' } }, { formula: '=SUM(F2:F30)', style: { fontWeight: 'bold' } }, ] }], columns: [ { width: 180 }, { width: 130 }, { width: 130 }, { width: 180 }, { width: 130 }, { width: 120 } ] }, { name: 'OrderDetails', ranges: [{ dataSource: (dataSource as any).orderDetails }], // you can refer this datasource in this link https://ej2.syncfusion.com/javascript/demos/spreadsheet/default/datasource.js columns: [ { width: 64 }, { width: 120 }, { width: 88 }, { width: 220 }, { width: 100 }, { width: 78 }, { width: 78 }] }], created: (): void => { spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'CarSalesReport!A1:F1'); spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle' }, 'OrderDetails!A1:I1'); spreadsheet.numberFormat('$#,##0.00', 'F2:F31'); spreadsheet.addFileMenuItems([{ text: "Print" }], "Save As"); }, fileMenuItemSelect: (args: MenuSelectEventArgs) => { let sheets: SheetModel[] = spreadsheet.sheets; if (args.item.text == "Print") { if (spreadsheet.activeSheetIndex === 0) { ssEle.querySelector(".e-sheet-content").innerHTML = document.querySelector( ".e-sheet-content" ).outerHTML; // To add the spreadsheet table let usedRange: UsedRangeModel = spreadsheet.getActiveSheet().usedRange; let tbody: Element = ssEle.querySelector('tbody'); for (let i: number = tbody.getElementsByClassName('e-row').length; i >= 0; i--) { if (tbody.getElementsByClassName('e-row')[i] && parseInt(tbody.getElementsByClassName('e-row')[i].getAttribute('aria-rowindex')) > usedRange.rowIndex + 1) { tbody.getElementsByClassName('e-row')[i].remove(); } } if (sheets[spreadsheet.activeSheetIndex + 1]) { spreadsheet.goTo(sheets[spreadsheet.activeSheetIndex + 1].name + "!A1"); isPrint = true; } else { print(ssEle); ssEle.querySelector(".e-sheet-content").innerHTML = ''; } } else { if (sheets[0]) { spreadsheet.goTo(sheets[0].name + "!A1"); isPrint = true; } } } }, dataBound: () => { if (isPrint) { ssEle.querySelector(".e-sheet-content").innerHTML += document .querySelector(".e-sheet-content").outerHTML; let usedRange: UsedRangeModel = spreadsheet.getActiveSheet().usedRange; let tbody: Element = ssEle.querySelector('.e-sheet-content').children[spreadsheet.activeSheetIndex].querySelector('tbody'); for (let i: number = tbody.getElementsByClassName('e-row').length; i >= 0; i--) { if (tbody.getElementsByClassName('e-row')[i] && parseInt(tbody.getElementsByClassName('e-row')[i].getAttribute('aria-rowindex')) > usedRange.rowIndex + 1) { tbody.getElementsByClassName('e-row')[i].remove(); } } let sheets: SheetModel[] = spreadsheet.sheets; if (sheets.length - 1 === spreadsheet.activeSheetIndex) { let count: number = ssEle.querySelector(".e-sheet-content").childElementCount; if (count > 1) { for (let i: number = 0; i < count; i++) { (ssEle.querySelector('.e-sheet-content').children[i].getElementsByClassName('e-virtualtrack')[0] as HTMLElement).style.height = 'auto'; ssEle.querySelector('.e-sheet-content').children[i].setAttribute('style', 'page-break-after: always;') } } print(ssEle); isPrint = false; ssEle.querySelector(".e-sheet-content").innerHTML = ''; } else { if (sheets[spreadsheet.activeSheetIndex + 1]) { spreadsheet.goTo(sheets[spreadsheet.activeSheetIndex + 1].name + "!A1"); } } } } }); //Render initialized Spreadsheet component spreadsheet.appendTo('#spreadsheet');
Refer to our documentation and online samples for more features. If you have any queries, please let us know in the comments below. You can also contact us through our Support forum or Support ticket. We are happy to assist you!