SpreadJS Documentation
SpreadJS Documentation / Developer's Guide / JavaScript Frameworks / SpreadJS with Vue
In This Topic
    SpreadJS with Vue
    In This Topic

    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 Node Package Manager
    2. Using Traditional HTML

    Using Node 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.