JSS to XLSX export Extension
XLSX render is a premium extension and not part of the default distribution.
JavaScript example
<html> <script src="https://jspreadsheet.com/v10/jspreadsheet.js"></script> <script src="https://jsuites.net/v5/jsuites.js"></script> <link rel="stylesheet" href="https://jspreadsheet.com/v10/jspreadsheet.css" type="text/css" /> <link rel="stylesheet" href="https://jsuites.net/v5/jsuites.css" type="text/css" /> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" /> <script src="https://cdn.jsdelivr.net/npm/jszip@3.6.0/dist/jszip.min.js"></script> <script src="https://jspreadsheet.com/v10/plugins/parser.js"></script> <script src="https://jspreadsheet.com/v10/plugins/render.js"></script> <div id="spreadsheet"></div> <input type='button' value='Export to XLSX' onclick="download()"> <script> // Set your JSS license key (The following key only works for one day) jspreadsheet.setLicense('ZWU5MWZhNzA4NWQ2ZThmZGFhODZhMzYwY2JlZDg3NWQ4N2U4M2NkMjU5YzE0MTI0Y2FhYWU4ZTY4ZTVlNzc0ZTg0NWQ0N2QzMGY0OTMxNzdkMzZhODViNzhkNzRjOTQ0NzE2YTY2YWQ3NTkxMDQzMzQxOGQ5NzlmNGM5NzRmNjAsZXlKdVlXMWxJam9pU25Od2NtVmhaSE5vWldWMElpd2laR0YwWlNJNk1UWTROVGczT0RFMU9Td2laRzl0WVdsdUlqcGJJbXB6Y0hKbFlXUnphR1ZsZEM1amIyMGlMQ0pqYjJSbGMyRnVaR0p2ZUM1cGJ5SXNJbXB6YUdWc2JDNXVaWFFpTENKamMySXVZWEJ3SWl3aWQyVmlJaXdpYkc5allXeG9iM04wSWwwc0luQnNZVzRpT2lJek5DSXNJbk5qYjNCbElqcGJJblkzSWl3aWRqZ2lMQ0oyT1NJc0luWXhNQ0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owSWl3aVltRnlJaXdpZG1Gc2FXUmhkR2x2Ym5NaUxDSnpaV0Z5WTJnaUxDSndjbWx1ZENJc0luTm9aV1YwY3lKZExDSmtaVzF2SWpwMGNuVmxmUT09'); // Set the extensions jspreadsheet.setExtensions({ parser, render }); // Import a XLSX file from a remote file jspreadsheet.parser({ url: '/jspreadsheet/list.xlsx', onload: function(config) { jspreadsheet(document.getElementById('spreadsheet'), config); }, }); // Download method var download = function() { // Render to XLSX jspreadsheet.render(document.getElementById('spreadsheet'), { filename: 'export.xlsx', }); } </script> </html>
React example
import React, { useRef } from "react"; import { jspreadsheet } from "@jspreadsheet/react"; import parser from "@jspreadsheet/parser"; import render from "@jspreadsheet/render"; // Set your JSS license key (The following key only works for one day) jspreadsheet.setLicense('ZWU5MWZhNzA4NWQ2ZThmZGFhODZhMzYwY2JlZDg3NWQ4N2U4M2NkMjU5YzE0MTI0Y2FhYWU4ZTY4ZTVlNzc0ZTg0NWQ0N2QzMGY0OTMxNzdkMzZhODViNzhkNzRjOTQ0NzE2YTY2YWQ3NTkxMDQzMzQxOGQ5NzlmNGM5NzRmNjAsZXlKdVlXMWxJam9pU25Od2NtVmhaSE5vWldWMElpd2laR0YwWlNJNk1UWTROVGczT0RFMU9Td2laRzl0WVdsdUlqcGJJbXB6Y0hKbFlXUnphR1ZsZEM1amIyMGlMQ0pqYjJSbGMyRnVaR0p2ZUM1cGJ5SXNJbXB6YUdWc2JDNXVaWFFpTENKamMySXVZWEJ3SWl3aWQyVmlJaXdpYkc5allXeG9iM04wSWwwc0luQnNZVzRpT2lJek5DSXNJbk5qYjNCbElqcGJJblkzSWl3aWRqZ2lMQ0oyT1NJc0luWXhNQ0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owSWl3aVltRnlJaXdpZG1Gc2FXUmhkR2x2Ym5NaUxDSnpaV0Z5WTJnaUxDSndjbWx1ZENJc0luTm9aV1YwY3lKZExDSmtaVzF2SWpwMGNuVmxmUT09'); // Set the extensions jspreadsheet.setExtensions({ parser, render }); // Create the component export default function App() { // Spreadsheet array of worksheets const spreadsheet = useRef(); // Import a XLSX file from a remote file useEffect(() => { jspreadsheet.parser({ url: '/jspreadsheet/list.xlsx', onload: function(config) { jspreadsheet(spreadsheet.current, config); }, }); }, []); // Download method const download = () => { // Render to XLSX jspreadsheet.render(spreadsheet.current, { filename: 'export.xlsx', }); } // Render data grid component return ( <> <div ref={spreadsheet}></div> <input type={"button"} value={"Download"} onClick={() => download()} /> </> ); }
See this example on codesandbox
Vue example
<template> <Spreadsheet ref="spreadsheet" :license="license" :extensions="extensions"> <Worksheet :minDimensions="[10,10]" /> <Worksheet :minDimensions="[10,10]" /> </Spreadsheet> <input type="button" value="Import CSV" @click="download" /> </template> <script> import { Spreadsheet, Worksheet, jspreadsheet } from "@jspreadsheet/vue"; import render from "@jspreadsheet/render"; // Define the data grid license const license = 'ZWU5MWZhNzA4NWQ2ZThmZGFhODZhMzYwY2JlZDg3NWQ4N2U4M2NkMjU5YzE0MTI0Y2FhYWU4ZTY4ZTVlNzc0ZTg0NWQ0N2QzMGY0OTMxNzdkMzZhODViNzhkNzRjOTQ0NzE2YTY2YWQ3NTkxMDQzMzQxOGQ5NzlmNGM5NzRmNjAsZXlKdVlXMWxJam9pU25Od2NtVmhaSE5vWldWMElpd2laR0YwWlNJNk1UWTROVGczT0RFMU9Td2laRzl0WVdsdUlqcGJJbXB6Y0hKbFlXUnphR1ZsZEM1amIyMGlMQ0pqYjJSbGMyRnVaR0p2ZUM1cGJ5SXNJbXB6YUdWc2JDNXVaWFFpTENKamMySXVZWEJ3SWl3aWQyVmlJaXdpYkc5allXeG9iM04wSWwwc0luQnNZVzRpT2lJek5DSXNJbk5qYjNCbElqcGJJblkzSWl3aWRqZ2lMQ0oyT1NJc0luWXhNQ0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owSWl3aVltRnlJaXdpZG1Gc2FXUmhkR2x2Ym5NaUxDSnpaV0Z5WTJnaUxDSndjbWx1ZENJc0luTm9aV1YwY3lKZExDSmtaVzF2SWpwMGNuVmxmUT09'; // Define the data grid extensions const extensions = { render }; export default { components: { Spreadsheet, Worksheet, }, methods: { download() { // Spreadsheet instance jspreadsheet.render(this.$refs.spreadsheet.current[0].parent, { filename: 'file.xlsx', }); } }, data() { const spreadsheet = ref(null); return { spreadsheet, license, extensions, }; } } </script>
Angular example
import { Component, ViewChild, ElementRef } from "@angular/core"; import * as jspreadsheet from "jspreadsheet"; import * as render from "@jspreadsheet/render"; import "/node_modules/jsuites/dist/jsuites.css"; import "/node_modules/jspreadsheet/dist/jspreadsheet.css"; const license = 'ZWU5MWZhNzA4NWQ2ZThmZGFhODZhMzYwY2JlZDg3NWQ4N2U4M2NkMjU5YzE0MTI0Y2FhYWU4ZTY4ZTVlNzc0ZTg0NWQ0N2QzMGY0OTMxNzdkMzZhODViNzhkNzRjOTQ0NzE2YTY2YWQ3NTkxMDQzMzQxOGQ5NzlmNGM5NzRmNjAsZXlKdVlXMWxJam9pU25Od2NtVmhaSE5vWldWMElpd2laR0YwWlNJNk1UWTROVGczT0RFMU9Td2laRzl0WVdsdUlqcGJJbXB6Y0hKbFlXUnphR1ZsZEM1amIyMGlMQ0pqYjJSbGMyRnVaR0p2ZUM1cGJ5SXNJbXB6YUdWc2JDNXVaWFFpTENKamMySXVZWEJ3SWl3aWQyVmlJaXdpYkc5allXeG9iM04wSWwwc0luQnNZVzRpT2lJek5DSXNJbk5qYjNCbElqcGJJblkzSWl3aWRqZ2lMQ0oyT1NJc0luWXhNQ0lzSW1Ob1lYSjBjeUlzSW1admNtMXpJaXdpWm05eWJYVnNZU0lzSW5CaGNuTmxjaUlzSW5KbGJtUmxjaUlzSW1OdmJXMWxiblJ6SWl3aWFXMXdiM0owSWl3aVltRnlJaXdpZG1Gc2FXUmhkR2x2Ym5NaUxDSnpaV0Z5WTJnaUxDSndjbWx1ZENJc0luTm9aV1YwY3lKZExDSmtaVzF2SWpwMGNuVmxmUT09'; // Set your JSS license key (The following key only works for one day) jspreadsheet.setLicense(license); // Extensions jspreadsheet.setExtensions({ render }); @Component({ selector: "app-root", template: `<div #spreadsheet></div> <input type="button" value="Import CSV" (click)="this.export()" />` }) export class AppComponent { @ViewChild("spreadsheet") spreadsheet: ElementRef; // Worksheets worksheets: jspreadsheet.worksheetInstance[]; // Create a new data grid ngAfterViewInit() { // Create spreadsheet this.worksheets = jspreadsheet(this.spreadsheet.nativeElement, { worksheets: [ { minDimensions: [10, 10] }, { minDimensions: [10, 10] } ] }); } export() { // Spreadsheet instance jspreadsheet.render(this.worksheets[0].parent, { filename: 'file.xlsx', }); } }