# FAQ

The content of this chapter collects the common problems that everyone has feedback. If the official documents and this list can’t answer your questions, I recommend you to Official Forum (opens new window)

# What is the difference between data and celldata in luckysheetfile?

A: Use one-dimensional array format celldata, after the initialization is completed, the data converted into a two-dimensional array format is used for storage and update, and celldata is no longer used.

If you need to take out data as initial data, you need to execute transToCellData(data) to convert it to celldata data. Among them, the celldata in { r, c, v } format is converted to a two-dimensional array using transToData(celldata)

Summarized as follows:

// data => celldata two-dimensional array data into {r, c, v} format one-dimensional array
luckysheet.transToCellData(data)

// celldata => data to generate the two-dimensional array required for the table
luckysheet.transToData(celldata)

# What are the cell types?

A: Refer to Cell Format List, with examples of available cell formats


# How to use Luckysheet in Vue/React project?

A: Check


# Why will the formula in the table not be triggered after initialization?

A: Refer to Table data format ,just set the calcChain corresponding to the cell data.


# Is the remote loading data loadUrl or updateUrl?

A: loadUrl. Configure loadUrl, Luckysheet will request the entire table data through ajax, and updateUrl will be used as the interface address for collaborative editing in real-time saving. Note: Initial data needs to be configured with loadUrl parameter, while for collaborative editing, the four parameters of loadUrl, updateUrl and allowUpdate can be configured to take effect.


# What is the difference between index and order for each sheet page?

A: Each sheet page has a unique id, which is index, which can be incremented by numbers or a random string. And order is the sorting situation of all sheets, starting from 0, can only be numbers 0,1,2....


# Why can’t I run the project directly under the dist folder?

A: Need to start the local server


# How to import and export excel?

A: The excel import and export library developed with Luckysheet-Luckyexcel (opens new window) has realized the excel import function, and the export function is under development.You can refer to these 2 blog posts for excel export at this stage:


# How to merge cells during initialization?

A: Refer to the following case:


# How does 'Luckysheet' save the data from the table to the database? Is there a soulution for storage and collaboration?

A: There are two options:


# How to monitor cell hover or click events? how to monitor cellRenderAfter in real-time?

A: We have collected the secondary development requirements for cell events, and planned the cell-related hook functions, refer to cell hook function (the TODO displayed is not yet open)


# How to customize the top toolbar?

A: reference: options.showtoolbarconfig(TODO means waiting to developed)


# Does the project use jQuery?

A: yes. At the beginning, Luckysheet uses jQuery。The packaging tool will package the jQuery to this file ./plugins/js/plugin.js

If your project (such as react / Vue) also references jQuery globally and causes conflicts, you can try to remove a jQuery.

if you want to remove jQuery in Luckysheet, you can find jQuery in source code folder gulpfile.js: src/plugins/js/jquery.min.js (opens new window),then delete information related to jQuery.


# How to add a field to a cell object?

A: reference cell object format,then read this annotationsrc/controllers/postil.js (opens new window)。the annotation is a configuration in a cell object.


# The toolbar icon is on the loading stage all the time.

A: The luckysheet use iconfont icon in this project, if any icon cannot be loaded ,plz check your iconfont.css. we are so sorry that we did not describe it clearly in the old version documents.

Now the documents have been updated.official documents


# Can't run Luckyexcel after package.

A: Terminal does not show end, but if the dist folder has this file luckyexcel.js, it is normal.

Lucky excel is an excel import and export library. The project uses gulp as a packaging tool. There is a problem with the old version of the packaging tool, but it is fixed now. if this problem still troubles you, plz check the following steps:

  1. pull the latest code.
  2. npm i
  3. npm run build

more information: Luckyexcel (opens new window)


# How to disable editing of cells?How to open sheet protection?

A: Sheet protection includes disable editing of cells that you need to make some configurations on each sheets. config.authority, the latest configurationssheet protection

In order to make it easier for you to understand the function of sheet protection, the following video shows how to make the whole sheet uneditable, but allow a column of cells to be edited:

In you local browser, you can open the control pannel, use luckysheet.getLuckysheetfile()[0].config.authority to get the configuration parameters.


# How to configure data validation?

A: there is the configuration of data validation,data validation。Also there is the API that you can use data validation in any time. setDataVerification.


# Is there a case for using Luckysheet with CDN?

A: Luckysheet supports CDN. reference: The case of using luckysheet by CDN (opens new window)


# how to limit the adaptive height of a picture in a cell?

A: First of all, you need to move the picture and adjust the cell size, and then there are the following situations:

  • if the cell contains a picture and you expand the cell, the picure will not be expanded.
  • if the cell contains a picture and you shorten the cell to the edge of the picture, the picture will shrink.
  • When the picture exceeds the border of the cell, the size of this picture will change with the size of the cell.

if you want to get the position of the picture, you can overlap the picture with the border of the cell.(in the source code, it needs to overlap more than 2px.)The following demo video shows how to limit the image to the adaptive width and height of the cell.


# How to get the default row height and column width of the worksheet?

A: There are two ways to get it

    1. use luckysheet.getLuckysheetfile() to get all configuration data, so you can get the defaultRowHeight and defaultColWidth in the sheet configuration data。
    1. use API to get the default row height getDefaultRowHeight and column width.getDefaultColWidth

# How to hide the add row button and the back to top button below the worksheet?

A: Configuration is open


# How to hide the row and column headings of the worksheet?

A: Configuration is open


# What method can be called to set config.merge?

A: Three methods

  • Interface operation
  • Use API: setRangeMerge
  • Manually assemble merge parameters

# Why is the official new feature ineffective?

A: The first step is to check whether you have used CDN to import,

The CDN link used in the Luckysheet tutorial is the service provided by jsdelivr (opens new window), and the code is from npmjs.com (opens new window) automatically sync the past, not from Github (opens new window). Because our newly submitted code still needs to be tested for a period of time, it will not be released to npm immediately, causing the npm code to lag behind Github.

If you need to try the latest code, we strongly recommend that you pull the code from the Luckysheet Github (opens new window) main repository. After our version is stable, we will consider releasing the npm package in real time.

The second step, if it is to import the packaged code of the github repository, test to determine whether there is a bug, you can find the problem and try to fix it, and then submit a PR (opens new window), if can't fix it, please submit issues (opens new window).


# npm run dev reported an error: ʻError: Cannot find module'rollup'`?

A: It may be a problem with the npm package installation, try the following steps:

  1. npm cache clean --force
  2. npm i rimraf -g
  3. rimraf node_modules
  4. Delete the package-lock.json file
  5. npm i
  6. npm run dev

Tip: Most other npm installation problems can also be solved by trying above steps.


# How to carry out secondary development of Luckysheet in Vue project?

A: The luckysheet-vue (opens new window) case is to provide an application integration solution.

If directly developed locally:

  1. Start both the Luckysheet project and your own Vue project. For example, the Luckysheet project is at http://localhost:3001
  2. Import Luckysheet to use in the Vue project through http://localhost:3001

In this case, after Luckysheet is modified in real time, the changes can be seen in the Vue project


# Error reporting Store.createChart when creating chart?

A: You need to introduce a chart plugin to use it. You should configure the chart plugin to use when the workbook is initialized. Refer to


# Can cells add custom attributes?

A: The custom attributes directly assigned to the cell object will be filtered. To make the custom attributes take effect, you need to edit the code to remove the filter attributes.


# How to enter text starting with '='? For example, =currentDate('YYYY-MM-DD'), it will remove the function by default, how to prohibit the function?

A: Just add a single quotation mark in front of it, and it will be forcibly recognized as a string, which is consistent with excel. For example: '=currentDate('YYYY-MM-DD')


# Why does the create callback have no effect?

A: The API method luckysheet.create() does not have a callback, but Luckysheet provides a hook function to execute the callback method at a specified location, such as:


# When create, the first cell is selected by default, how to remove it?

A: When the cell is selected, it is highlighted by default, just remove the highlight, use API: setRangeShow

luckysheet.setRangeShow("A2",{show:false})

# Where is the right-click event bound?

A: In the source code src/controllers/hander.js (opens new window), search for event.which == "3" to find the code executed by the right-click event.


# How to add a custom toolbar?

A: No configuration is currently provided, you can refer to the implementation of the print button in the toolbar to modify the source code:

  1. Search for luckysheet-icon-print globally to find the implementation of the print button, in src/controllers/constant.js (opens new window) add a similar template string, you need to customize a unique id
  2. Modify src/controllers/resize.js (opens new window) and add a new record in the toobarConfig object
  3. Modify src/controllers/menuButton.js (opens new window) to add an event listener

# How to add custom formulas?

A: Two source codes need to be modified:

  1. Add a formula to the functionImplementation object in the src/function/functionImplementation.js (opens new window) file, format refer to formulas such as SUM/AVERAGE
  2. Modify all the language packs in the src/locale (opens new window) file directory, and add the new formula description to the functionlist array in. Among them, t is the category of the function, m is the number of parameters, the minimum number of parameters and the maximum number of parameters.

# Is there a similar loadData interface, I want to load 10 records first, and then dynamically load the data, these data are appended to the table?

A: Yes. Our loadSheetUrl provides this function, which can be turned on by initializing options.enablePage = true.

Searching for enablePage in the source code, you can see that there is a method.addDataAjax method, which contains an ajax request to dynamically load data, which will be appended to the worksheet.

This function is now hidden in the document, because when we made this interface, the interface parameters were matched according to our actual business, which may not be universal. We are going to abstract and release it for everyone to use. If you want to use it yourself you can change it based on this.

It is recommended that you consider writing your own interface to load the data, and then use setRangeValue to append the data at the specified location, which has a higher degree of customization.