SpreadJS Documentation
Using SpreadJS with Vue
SpreadJS Documentation > Developer's Guide > Working with JavaScript Frameworks > Using SpreadJS with Vue

SpreadJS supports Vue - a JavaScript framework that provides developers with distinct tools in order to help them build complex user interfaces and web applications.

SpreadJS can be used with Vue in the following two ways:

  1. Using Nuget Package Manager
  2. Using Traditional HTML

Using Nuget Package Manager

This method involves the following steps:

  1. Create a Vue Project

    Open the command prompt window and type the following commands in order to create a simple Vue project with vue init webpack.

     $ npm install --global vue-cli

    # create a new project using the "webpack" template
    $ vue init webpack my-project

    # install dependencies and go!
    $ cd my-project
    $ npm run dev                    

    After you finish, the Vue project will be created at the specified location in the directory. For more information on how to create a Vue project, refer to https://vuejs.org/v2/guide/installation.html.

  2. Import SpreadJS Vue Module in Project

    Next, you need to install @grapecity/spread-sheets-vue in your project using the following command:

    $ npm install @grapecity/spread-sheets-vue
           
  3. Use SpreadJS in Vue application

    Now, you can modify the App.vue file as per your requirements. Changes will be reflected when the browser window is refreshed. As an example, you can use the sample code given below:

    JavaScript
    Copy Code

    <template>
      <div>
          <gc-spread-sheets
            :hostClass='hostClass'
          >
            <gc-worksheet
              :dataSource="dataTable"
              :autoGenerateColumns = 'autoGenerateColumns'
            >
              <gc-column
                :width="width"
                :dataField="'price'"
                :visible = 'visible'
                :formatter = 'formatter'
                :resizable = 'resizable'
              ></gc-column>

            </gc-worksheet>

          </gc-spread-sheets>
      </div>
    </template>
    <script>
      import '@grapecity/spread-sheets/styles/gc.spread.sheets.excel2016colorful.css'
      import  '@grapecity/spread-sheets-vue'
      export default {
        data(){
          return {
            hostClass:'spread-host',
            autoGenerateColumns:true,
            width:300,
            visible:true,
            resizable:true,
            formatter:"$ #.00"
          }
        },
        computed:{
          dataTable(){
            let dataTable = [];
            for (let i = 0; i < 42; i++) {
              dataTable.push({price: i + 0.56})
            }
            return dataTable
          }
        }
      }
    </script>
    <style scoped>
    .spread-host {
        width: 500px;
        height: 600px;
    }
    </style>

Using Traditional HTML

This method involves the following steps:

  1. Create a HTML page

    As the first step, you need to create a HTML page.

  2. Add SpreadJS and Vue-SpreadJS to HTML template

    Add references to the gc.spread.sheets.all.*.*.*.min.js,  gc.SpreadJS.*.*.*.css and  gc.spread.sheets.vue.*.*.*.js files in the HTML template (i.e. your index.html file).

  3. Use SpreadJS in Vue application

    Now, you can use SpreadJS in your Vue application. As an example, you can use the sample code given below:

    JavaScript
    Copy Code

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Hello SpreadJS Vue</title>
        <link rel="stylesheet" href="lib/gc.spread.sheets.excel2016colorful.0.0.0.css" type="text/css"/>
        <style>
            #app{
                width: 100%;
                height:100%;
            }
            .vue-demo{
                width: 800px;
                height:400px;
                margin: 0 auto;
            }
        </style>
    </head>
    <body>
    <div id="app">
     <app></app>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="lib/gc.spread.sheets.all.0.0.0.js"></script>
    <script src="lib/gc.spread.sheets.vue.js"></script>
    <script type="text/x-template" id="app-template">
         <div>
            <gc-spread-sheets
              v-bind:hostClass='hostClass'
              @workbookInitialized='spreadInitHandle'
            >
                <gc-worksheet  >

                </gc-worksheet>
            </gc-spread-sheets>

         </div>
    </script>
    <script type="text/javascript">
        window.onload = function () {
            Vue.component('app', {
                template: '#app-template',
                data:function () {
                    return {
                        hostClass: "vue-demo"
                    }
                },
                methods: {
                    spreadInitHandle: function (spread) {
                        window.mySpread = spread;
                        console.log('now you can also get spread from window');
                    }
                }
            });
            new Vue({
                el:"#app",
            })
        }
    </script>

    </body>
    </html>         
                  

The SpreadSheets, Worksheet, and Column are the basic elements with tag hierarchy. Other elements work by setting them. The main tag hierarchy is:

<gc-spread-sheets>
<gc-worksheet>
<gc-column></gc-column>
    ...
</gc-worksheet>
  ...
</gc-spread-sheets>

The following topics list the element directives.