Export SparklineEx To Image

When exporting to Excel, you can export SparklineEx as an image by setting saveAsOption to true. This feature is also supported by CustomSparkline. Sample Code:
window.onload = function () { const spread = new GC.Spread.Sheets.Workbook(document.getElementById('spread-host'), { sheetCount: 2 }); document.querySelector('sjs-report-toolbar').attachSpread(spread); initSpread(spread); }; function initSpread(spread) { initSheet(spread.getSheet(0)); initSheet1(spread.getSheet(1)); } function initSheet(sheet) { const data = [ ['Salesperson', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Column Sparkline'], ['Courtney Graves', 76000, 68250, 72000, 99750, 45500, 120500], ['Crystal Cross', 118750, 89250, 121250, 92500, 60750, 122750], ['Jodi Hall', 75500, 56500, 65500, 62750, 77500, 51750], ['Andrew James', 76750, 108500, 88000, 55750, 106000, 75500], ['Riley Hudson', 104500, 49000, 50250, 46750, 76750, 53250], ['Andrew Rodriguez', 82500, 103000, 48750, 119750, 110500, 112250], ['Margaret Smith', 111500, 124250, 118250, 91500, 80750, 120250], ['Travis Manning', 47250, 73250, 105750, 58250, 79500, 56250], ['Mary Perkins', 66500, 54500, 121500, 53750, 53250, 61250], ['Randy Neal', 108750, 96250, 72250, 85500, 51750, 68250], ] sheet.suspendPaint(); sheet.name("Column Sparkline"); sheet.setArray(2, 1, data); for (var i = 4; i < 14; i++) { sheet.setFormula(i - 1, 8, '=COLUMNSPARKLINE(C' + i + ':H' + i + ',1)'); sheet.setRowHeight(i - 1, 30); } //format sheet sheet.addSpan(0, 1, 1, 8); sheet.getCell(0, 1).value("Sales Data").font("15px Arial") .backColor("#DDDDDD"); sheet.setRowHeight(0, 45); sheet.getRange(2, 1, 1, 8) .font("bold 13px Arial") .setBorder(new GC.Spread.Sheets.LineBorder("black", GC.Spread.Sheets.LineStyle.thin), { bottom: true }); sheet.getRange(3, 2, 10, 6) .formatter("$#,##0"); for (var j = 2; j < 8; j++) { sheet.setColumnWidth(j, 80); } sheet.setColumnWidth(1, 120); sheet.setColumnWidth(8, 150); sheet.getRange(0, 0, 15, 9).vAlign(GC.Spread.Sheets.VerticalAlign.center); sheet.resumePaint(); }; function initSheet1(sheet) { sheet.suspendPaint(); sheet.name('Barcode'); _setData(sheet); _setStyle(sheet); var FORMULA = 'BC_CODE128'; for (var row = 3; row < 7; row++) { sheet.setFormula(row, 3, '=' + FORMULA + '(C' + (row + 1) + ')'); sheet.setFormula(row, 4, '=' + FORMULA + '(C' + (row + 1) + ', , , false)'); sheet.setFormula(row, 5, '=' + FORMULA + '(C' + (row + 1) + ', , , true, "top", "B","Arial", "normal")'); } sheet.resumePaint(); } function _setData(sheet) { sheet.getCell(1, 1).value('Service'); sheet.getCell(1, 2).value('Number'); sheet.getCell(1, 3).value('Code128'); sheet.getCell(2, 3).value('Fefault'); sheet.getCell(2, 4).value('Hidden Label'); sheet.getCell(2, 5).value('Custom Label Font'); var dataArray = [ ['Police', 911], ['Telephone Directory Assistance', 411], ['Non-emergency Municipal Services', 311], ['Travel Info Call 511', 511] ]; sheet.setArray(3, 1, dataArray); } function _setStyle(sheet) { for (var row = 3; row < 7; row++) { sheet.setRowHeight(row, 80); } sheet.addSpan(1, 1, 2, 1) sheet.addSpan(1, 2, 2, 1) sheet.addSpan(1, 3, 1, 3) sheet.setColumnWidth(0, 20); sheet.setColumnWidth(1, 240); sheet.setColumnWidth(2, 100); sheet.setColumnWidth(3, 240); sheet.setColumnWidth(4, 240); sheet.setColumnWidth(5, 240); sheet.getRange(1, 1, 2, 5) .foreColor('#000') .backColor('#FFF3CE') .borderLeft(new GC.Spread.Sheets.LineBorder('orange', GC.Spread.Sheets.LineStyle.thin), { outline: true }) .borderBottom(new GC.Spread.Sheets.LineBorder('orange', GC.Spread.Sheets.LineStyle.thin), { outline: true }); sheet .getRange(1, 1, 6, 5) .vAlign(GC.Spread.Sheets.VerticalAlign.center) .hAlign(GC.Spread.Sheets.HorizontalAlign.center) .setBorder(new GC.Spread.Sheets.LineBorder('orange', GC.Spread.Sheets.LineStyle.medium), { outline: true }); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-io/dist/gc.spread.sheets.io.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/en/purejs/node_modules/@mescius/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="$DEMOROOT$/en/sample/features/sparklines/export-sparkline-ex-to-image/toolbar.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/FileSaver.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <sjs-report-toolbar></sjs-report-toolbar> <div id="spread-host"></div> </div> </body> </html>
body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .sample-tutorial { position: relative; height: 100%; overflow: hidden; } #spread-host { width: 100%; height: calc(100% - 56px); overflow: hidden; float: left; }