Arbeta med GridJs klient sidan

Arbeta med GridJs klient-sidan

Vi utvecklade GridJs klienten baserat på x-spreadsheet.

De huvudsakliga stegen är:

  • skapa x_spreadsheet-instans
xs = x_spreadsheet(id, options)
    // the parameters are:
    id:the html node id ,for example :'#gridjs-demo' for the html  <div id="gridjs-demo"></div>
    options: the load options


for example the below code init a gridjs_spreadsheet object.
	xs = x_spreadsheet('#gridjs-demo', {
			updateMode:'server',
			updateUrl:'/GridJs2/UpdateCell',
			mode: 'edit',
			showToolbar: true,
                        local: 'en',
			showContextmenu: true
			})

Parametrarna för laddningsalternativ:

Parameter Beskrivning Standardvärde Valfri
allowSelectTextInTextBoxInReadMode Tillåta markerings av text i TextBox-kontroller i läs-läge.
Standardvärdet är falskt.
false Ja
checkSyntax Utföra syntaxkontroll och stavningskorrigering för användarens inmatning av textinnehåll.
Fungerar tillsammans med setSyntaxCheckUrl.
Standardvärdet är falskt.
false Ja
loadingGif URL för laddnings-GIF när bilder/former laddas.
Standardvärdet är content/img/updating.gif.
content/img/updating.gif Ja
local Ange lokaliseringsinfo för menyer och verktygsfält, stödjer flera språk.
Möjliga värden inkluderar:
- en, zh, es, pt, de, ru, nl (för engelska, kinesiska, spanska, portugisiska, tyska, ryska, nederländska)
- ar, fr, id, it, ja (för arabiska, franska, indonesiska, italienska, japanska)
- ko, th, tr, vi, cht (för koreanska, thailändska, turkiska, vietnamesiska, traditionell kinesiska)
en Ja
mode Kan vara read eller edit; read betyder ett skrivskyddat kalkylblad; edit betyder att kalkylbladet kan redigeras. Ingen Nej
isCollaborative Behöver stödja samarbetsläge . false Ja
searchHighlightColor Belysningsfärg för söktermen.<br;Färgen måste inkludera en alfa-kanal för transparens. #dbe71338 Ja
showCheckSyntaxButton Visa knappar för syntaxkontroll & stavningskorrigering i verktygsfältet.
Standardvärdet är falskt.
false Ja
showContextmenu Visa kontextmenyn vid högerklick på en cell.
Standardvärdet är sant.
true Ja
showFileName Visa filnamnet. true Ja
showFormulaExplain Visa forklaring av formler tillämpade på denna cell när musen flyttas över den.
Fungerar tillsammans med setFormulaExplainUrl.
Standardvärdet är falskt.
false Ja
showFormulaTip Om formeln som är tillämpad på denna cell ska visas när musen flyttas över den.
Standardvärdet är falskt.
false Ja
showNonEditableSymbolInCell Om en klient-sida icke-redigerbar symbol ska visas i cellen.
Om satt till sant, efter att ha klickat på högerklickskontextmenyn “Inaktivera redigering”, visas symbolen i det avlästa området.
Standardvärdet är falskt.
false Ja
showToolbar Om verktygsfältet ska visas. true Ja
updateMode För närvarande stöds endast server. server Nej
updateUrl Sätt server-URL för uppdateringsåtgärder baserade på JSON. Ingen Nej
view Ange vistsstorleken för bladet, t.ex., {width: () => 1000, height: ()=> 500}. {width: () => dokument.documentElement.clientWidth, height: () => dokument.documentElement.clientHeight } Ja
token Ange autentiseringstoken. När token inte är null kommer Authorization: Bearer {token}-huvudet automatiskt läggas till i förfrågningshuvudet. Du kan använda xs.refreshToken(token) för att ange ett nytt token. Ingen Ja
showBottombarStats Vill du visa statistik för bottenfältet.
Standardvärdet är sant.
true Ja
showRowAppenderToolbar Vill du visa verktygsfält för batchrads-appendare.
Standardvärdet är sant.
true Ja
  • ladda med json-data
xs.loadData(data)
// the parameters is:
	data: the json data which describ the data structure for the worksheets
  • ställ in aktivt blad med bladnamnet
xs.setActiveSheetByName(sheetname)
// the parameters is:
	sheetname: the sheet name 
  • ställ in aktivt blad med ID
xs.setActiveSheet(id)
// the parameters is:
	sheetname: the sheet id 
  • ställ in aktiv cell
xs.setActiveCell(row,col);
// the parameters are:
	row: the cell row
	col: the cell column
  • ställ in aktiv för flera instanser
xs.setActiveForMultipleInstance(isacitve);
// the parameters are:
	isacitve: whether need to do edit operation at this xs instanse 
// when there are more than one GridJs instances in one page, we need to call this method.
// we only support do edit operation for one instances at a page.
// for example,if we have two instances: xs1 and xs2 in one html page.
// if we need to keep edit operation in xs1,
// we shall call:
xs1.setActiveForMultipleInstance(true);
xs2.setActiveForMultipleInstance(false);

// if we need not do any edit operation for both,
// we shall call:
xs1.setActiveForMultipleInstance(false);
xs2.setActiveForMultipleInstance(false);

  • ställ in anpassad toast
xs.customToast(customToastFunction);
// the parameter is:
	customToastFunction: user defined function to toast message,it shall have three parameters :title, content,callback
	if set to null,it will use the default build-in toast.

    for example: 
            function myCustomToast(title, content, callback) {
	    //.....
	    }
            xs.customToast(myCustomToast);
  • ange information för form-/bildoperationer för server-sidan
xs.setImageInfo(imageGetActionUrl, imageAddByUploadActionUrl, imageAddByUrlActionUrl, imageCopyActionUrl, zindex, loadingGif);
// the parameters are:
	imageGetActionUrl: the get image action URL in the server side controller
	imageAddByUploadActionUrl: the upload image action  URL in the server side controller
	imageAddByUrlActionUrl: the add image from URL action  URL in the server side controller
	imageCopyActionUrl: the copy image action  URL in the server side controller
	zindex: the minimum zindex of the image in the canvas
	loadingGif (optional): the loading gif url when loading the image/shape .it is optional,the default value is:content/img/updating.gif
    for example: 
            const imageurl = "/GridJs2/imageurl";
            const imageuploadurl1 = "/GridJs2/AddImage";
            const imageuploadurl2 = "/GridJs2/AddImageByURL";
            const imagecopyurl = "/GridJs2/CopyImage";  
            const basiczorder = 5678;
    xs.setImageInfo(imageurl, imageuploadurl1, imageuploadurl2, imagecopyurl, basiczorder);
  • ange information för nerladdningsoperationer för server-sidan
xs.setFileDownloadInfo(downloadActionUrl);
// the parameters are:
	downloadActionUrl: the get download file action URL in the server side controller

    for example: 
            const fileDownloadUrl = "/GridJs2/Download";
            xs.setFileDownloadInfo(fileDownloadUrl);
  • ange information för ole-objektoperationer för server-sidan
xs.setOleDownloadInfo(oleActionUrl);
// the parameters are:
	oleActionUrl: the ole object file action URL in the server side controller
    for example: 
            const oleDownloadUrl = "/GridJs2/Ole";
            xs.setOleDownloadInfo(oleDownloadUrl);
  • ställ in info för syntaxkontroll & stavningskorrektionsåtgärd för server-sidan
xs.setSyntaxCheckUrl(checkUrl);
// the parameters are:
	checkUrl: the  syntax checking & spell correction operation action URL in the server side controller
    for example: 
            const checkurl = "/GridJs2/CheckSyntax";
            xs.setSyntaxCheckUrl(checkurl);
  • ställ in info för formelförklaring för server-sidan
xs.setFormulaExplainUrl(formulaExplainUrl);
// the parameters are:
	formulaExplainUrl: the  formula explanation  action URL in the server side controller
    for example: 
            const formulaExplainUrl = "/GridJs2/FormulaExplain";
            xs.setFormulaExplainUrl(formulaExplainUrl);

andra användbara API:er

  • Rendera vyn
xs.reRender()
  • Hämta aktivt blad-ID
xs.getActiveSheet()
  • Lägg till ett nytt kalkylblad
xs.addSheet(name,isactive,tabcolor,fontcolor)
// the parameters are:
	name:the sheet name
	isactive:whether set this sheet as active sheet
	tabcolor:the background color for the sheet in the tab bottom menu
	fontcolor:the font color for the sheet name in the tab bottom menu
   for example:
    xs.addSheet('hello',true,'#12ee5b','#2c5d3b')
  • Ändra bladnamnet
xs.modifySheetName(oldName,newName)
// the parameters are:
	oldName:the sheet name
	newName:the new desired name
   for example:
     xs.modifySheetName('Sheet1','student');
  • Ta bort bladet
xs.deleteSheet(name)
// the parameters is:
	name:the sheet name
   for example:
        xs.deleteSheet('Sheet1');

  • Ställ in zoomnivå
xs.setZoomLevel(zoom)
// the parameters is:
	zoom:the zoom level ,can be number ,for example 0.5 for zoom out, or 2 for zoom in
  • Ställ in filnamn
xs.setFileName(name)
// the parameters is:
	name:the file name with extension ,for example trip.xlsx
  • Ställ in funktionsanrop före spara
xs.setBeforeSaveFunction(func)
// the parameters is:
	func:This function is called before the save action. If it returns true, the save will proceed; otherwise, the save will not proceed.
   for example:
	xs.setBeforeSaveFunction(()=>{console.log('hello before save');return true;});
  • Callback-funktion för e-postutskick
xs.setEmailSendCallFunction(callback)
// the parameters is:
	callback: the callback function to handle email sending, receives a mailObj parameter
		callback: function(mailObj) {
			// mailObj properties:
			// mailObj.receiver: the email address of the receiver, e.g., 'example@gmail.com'
			// mailObj.type: the format of the file to be sent, can be 'html', 'xlsx', or 'pdf'
		}
  • om fönstertangentbordshändelser ska aktiveras för GridJs
xs.enableKeyEvent(isenable)
// the parameters is:
	isenable:whether the window key event is active for GridJs
//when has other controls in the same page, you may want to ignore the key event in GridJs 
  • avlänka alla händelser som är kopplade till GridJs, inklusive fönstertangentbordshändelse och fönsterändringhändelse
xs.destroy()
  • konfigurera de samarbetsinställningar i samarbetsläge, se till att setCollaborativeSetting innan setUniqueId
xs.setCollaborativeSetting(url,wsendpoint,wsapp,wsuser,wstopic)
    //the parameters are:
         url: the basic action URL in the server side controller to get history messages ,the default is '/GridJs2/msg'
	 wsendpoint: the websocket endpoint in the server side , the default is '/ws'
	 wsapp: the websocket destinations prefixed with "/app", the default is '/app/opr'
	 wsuser: the websocket for user-specific queues prefixed with "/usr", the default is '/user/queue'
	 wstopic: the websocket destinations prefixed with "/topic", the default is '/topic/opr'


  • ställ in synligt filter för bild/form
xs.setVisibleFilter((sheet,s) =>{})
    //  to set a function which return true(for visible) or false(for invisible) for the visible filter with the below parameters :
	sheet:the sheet instance
	s:the image or shape instance
    for example: 
	//this will make visible for image/shape in sheet with name 'Sheet3' and 'Sheet1' except for the 'Rectangle' type
		xs.setVisibleFilter((sheet,s) => { if (sheet.data.name==='Sheet3'||sheet.data.name==='Sheet1') return s.type!=='Rectangle';  return false; })
	//this will make visible for image/shape in sheet with name  'Sheet1' 
		xs.setVisibleFilter((sheet,s) => { if (sheet.data.name==='Sheet1') return true;  return false; })
	//this will make invisible for image/shape in all sheets 
		xs.setVisibleFilter((sheet,s) => {  return false; })
	//if all the image/shape is already loaded and you want to change the visible filter at runtime,you can call the below code to trigger a reload for image/shape
		xs.reRender()
  • Hämta den valda bilden/formen, om inget är valt returneras null
xs.sheet.selector.getObj()
  • Visa eller dölja ett HTML-element vid en angiven cellposition
xs.sheet.showHtmlAtCell(isShow, html, ri, ci, deltaX, deltaY)

    //the parameters are:
      isShow: Boolean value indicating whether to show or hide the HTML content.
      html: The HTML string to be displayed.
      ri: Row index of the target cell.
      ci: Column index of the target cell.
      deltaX: (Optional) Relative X-position adjustment from the top-left corner of the cell.
      deltaY: (Optional) Relative Y-position adjustment from the top-left corner of the cell.

    for example: 
    // Show HTML at cell A1
    xs.sheet.showHtmlAtCell(true, "<span>html span</span><input length='30' id='myinput'>test</input>", 0, 0);

    // Hide the HTML node
    xs.sheet.showHtmlAtCell(false);

    // Note: When an HTML node is shown, the default GridJS event handling is disabled to allow interaction with the HTML content.
    // This means you cannot select any cells or perform edit operations until the HTML node is hidden.
  • Sätt det valbara tillståndet för bild/form
const shape=xs.sheet.selector.getObj();
shape.setControlable(isenable)
     // the parameter is:
      isenable: when set to true,the image or shape can be selectable and movable/resizeable
  • Infoga rader
xs.sheet.insertRows(start, n)
    // the parameters are:
	start: start row id 
	n:how many rows will be inserted
  • Infoga kolumner
xs.sheet.insertColumns(start, n)
    // the parameters are:
	start: start column id
	n:how many columns will be inserted
  • Ta bort rader
xs.sheet.deleteRows(start, n)
    // the parameters are:
	start: start row id 
	n:how many rows will be deleted
  • Ta bort kolumner
xs.sheet.deleteColumns(start, n)
    // the parameters are:
	start: start column id 
	n:how many columns will be deleted
  • Ange frysfönstret
xs.sheet.freeze(ri,ci)
    // the parameters are:
	ri:row index 
	ci:column index
  • Frysa inte panelen
xs.sheet.freeze(0,0)
  • Ställ in redigerbart/skrivt skyddat område
xs.sheet.setEditableRange(range,isenable)
    // the parameters are:
	range:the cell range ,etc. {sri:0,sci:0,eri:2,eci:2} reprensents range start from cell A1 to C3
	isenable:when set to true,the range is editable.other wise,the range is readonly.
  • Dölj rader
xs.sheet.hideRows(sri,eri)
    // the parameters are:
	sri:the start row index 
	eri:the end row index
  • Visa rader igen
xs.sheet.unhideRows(sri,eri)
    // the parameters are:
	sri:the start row index 
	eri:the end row index
  • Dölj kolumner
xs.sheet.hideColumns(sci,eci)
    // the parameters are:
	sci:the start column index 
	eci:the end column index
  • Visa kolumner igen
xs.sheet.unhideColumns(sci,eci)
    // the parameters are:
	sci:the start column index 
	eci:the end column index
  • Ange höjden för raden
xs.sheet.setRowHeight(ri,height)
    // the parameters are:
	ri:row index
	height:the height for the row
  • Ange höjden för raderna
xs.sheet.setRowsHeight(sri,eri,height)
    // the parameters are:
	sri:start row index
	eri:end row index
	height:the height for the rows
  • Ange höjden för alla rader
xs.sheet.setAllRowsHeight(height)
    // the parameters are:
	height:the height for the rows
  • Ange bredden för kolumnen
xs.sheet.setColWidth(ci,width)
    // the parameters are:
	ci:column index
	width:the width for the column
  • Ange bredden för kolumnerna
xs.sheet.setColsWidth(sci,eci,width)
    // the parameters are:
	sci:the start column index
	eci:the end column index
	width:the width for the column
  • Ange bredden för alla kolumner
xs.sheet.setAllColsWidth(width)
    // the parameters are:
	width:the width for the columns
  • Sätt kommentaren i cellen
xs.sheet.setComment(ri,ci,author,note)
    // the parameters are:
	ri:row index of the cell
	ci:column index of the cell
	author:the author for the comment
	note:the content for the comment
  • Ta bort kommentaren i cellen
xs.sheet.removeComment(ri,ci)
    // the parameters are:
	ri:row index of the cell
	ci:column index of the cell
  • Hämta cellobjektet
xs.sheet.data.getCell(ri,ci)
    // the parameters are:
	ri:row index 
	ci:column index
  • Hämta cellstilen
xs.sheet.data.getCellStyle(ri,ci)
    // the parameters are:
	ri:row index 
	ci:column index
  • Ange cellvärdet
xs.sheet.data.setCellText(ri,ci,value,state)
    // the parameters are:
	ri:row index 
	ci:column index
	value:the cell value
	state: input | finished ,if finished ,it will do update action to servside
  • Få / Ange det valda cellområdet
xs.sheet.data.selector.range
  • Ange cellvärdet för den valda cellen eller cellområdet
xs.sheet.data.setSelectedCellText(value)
    // the parameters are:
	value:the  value for the cell
  • Ange stilen för den valda cellen eller cellområdet
xs.sheet.data.setSelectedCellAttr(attributename,value)
    // the parameters are:
	attributename:font-name | font-bold | font-italic | font-size  | format|border|merge|formula |strike|textwrap |underline |align |valign |color|bgcolor|pattern
	value:the  value for the attribute
  • Sätt stil för det önskade cellområdet
xs.sheet.data.setRangeAttr(range,attributename,value)
    // the parameters are:
        range:the cell range ,etc. {sri:0,sci:0,eri:2,eci:2} reprensents range start from cell A1 to C3
	attributename:font-name | font-bold | font-italic | font-size  | format|border|merge|formula |strike|textwrap |underline |align |valign |color|bgcolor|pattern
	value:the  value for the attribute
   for example:
        xs.sheet.data.setRangeAttr({sri:0,sci:0,eri:2,eci:2},'bgcolor','#11ee2a');
  • Sammanfoga det valda cellområdet
xs.sheet.data.merge()
  • Avbryt sammanslagningen av det valda cellområdet
xs.sheet.data.unmerge()
  • Ta bort cellinnehåll eller rensa stilen i vald cell
xs.sheet.data.deleteCell(type)
    // the parameters are:
	type:all|format  all: means delete the cell and clear the style ;format means delete the cell value and keep the cell style
  • Ta bort cellinnehåll eller rensa stilen i det önskade cellområdet
xs.sheet.data.deleteRange(range,type)
    // the parameters are:
        range:the cell range ,etc. {sri:0,sci:0,eri:2,eci:2} reprensents range start from cell A1 to C3
	type:all|format  all: means delete the cell and clear the style ;format means delete the cell value and keep the cell style
  • Få bredden för kolumnen
xs.sheet.data.cols.sumWidth(min,max)
    // the parameters are:
	min:the start column index
	max:the end column index,not include
  • Få höjden för raden
xs.sheet.data.rows.sumHeight(min,max)
    // the parameters are:
	min:the start row index
	max:the end row index,not include
  • Få / Ange visningsriktningen
xs.sheet.data.displayRight2Left

Händelseåteranrop

  • Vi kan spåra nedanstående händelser
 xs.on('cell-selected', (cell, ri, ci) => {
                console.log('cell selected:', cell, ', ri:', ri, ', ci:', ci);
                if (ci === -1) {
                    console.log('ci === -1 means a row selected ',ri);
                }
                if (ri === -1) {
                    console.log('ri === -1 means a column selected',ci);
                }
            }).on('cells-selected', (cell, range) => {
                console.log('range   selected:', cell, ', rang:', range);
            }).on('object-selected', (shapeOrImageObj) => {
                console.log('shape or image selected id:', shapeOrImageObj.id, ', type: ', shapeOrImageObj.type);
            }).on('sheet-selected', (id,name) => {
                console.log('sheet selected id:', id, ', name: ',name);
            }).on('sheet-loaded', (id,name) => {
                console.log('sheet load finished:', id, ', name: ',name);
            }).on('cell-edited', (text, ri, ci) => {
	        //just edit the cell
                console.log('text:', text, ', ri: ', ri, ', ci:', ci);
            }).on('cells-updated', (name, cells) => {
	       //cell value got updated
                console.log('cells updated for sheet name:', name);
                cells.forEach((acell, index, array) => {
                console.log('acell got updated:', acell);
            })
            }).on('cells-deleted', (range) => {
                console.log('cells deleted :', range);
            }).on('rows-deleted', (ri, n) => {
                console.log('rows-deleted :', ri, ",size", n);

            }).on('columns-deleted', (ci, n) => {
                console.log('columns-deleted :', ci, ",size", n);

            }).on('rows-inserted', (ri, n) => {
                console.log('rows-inserted :', ri, ",size", n);

            }).on('columns-inserted', (ci, n) => {
                console.log('columns-inserted :', ci, ",size", n);

            });
  • Förhandsgranskning av händelse Om returnerar falskt, kommer inte insättnings-/raderingsoperationen att fortsätta.
  xs.checkRowInsert = (ri, size) => { if (ri % 2 == 1) return true; else return false; };
  xs.checkColumnInsert = (ci, size) => { if (ci % 2 == 1) return true; else return false; };
  xs.checkRowDelete = (ri, size) => { if (ri % 2 == 1) return true; else return false; };
  xs.checkColumnDelete = (ci, size) => { if (ci % 2 == 1) return true; else return false; };

Anpassning

  • Ange hemikon och länk
xs.sheet.menubar.icon.setHomeIcon(iconUrl,targetUrl)
    // the parameters are:
	iconUrl:the home icon URL
	targetUrl:the target link URL
	for example ,the below code will set the new logo and with link to google.com
	xs.sheet.menubar.icon.setHomeIcon('https://forum.aspose.com/letter_avatar_proxy/v4/letter/y/3e96dc/45.png','https://www.google.com')
  • Visa menyraden
xs.sheet.menubar.show()
  • Dölj menyraden
xs.sheet.menubar.hide()

API:er för formobjekt

  • Ändra bakgrundsfärg för formobjekt
    setBackgroundColor(color)
    // the parameters are:
        color: the html color value in hex string value
    //for example,we assume shape 0 existed,this will set the background color to Yellow 
     const ashape=xs.sheet.data.shapes[0];
     ashape.setBackgroundColor('#FFFF00');

API:er för TextBox-objekt

TextBox är en speciell typ av form där typen är: “TextBox”, till exempel: koden nedan kommer att visa vilken form som är textrutan

for (let shape of xs.sheet.data.shapes) {
    if (shape.type === 'TextBox') {
        console.log(shape.id + ' is a textbox');
    }
}
  • Tillämpa typsnittinställningar för textruteföremål
    setFont(fontsettings)
    // the parameter is:
        fontsettings:   {'name':'Arial', 'size':12, 'bold':true, 'color':'#FFFF00', 'italic':true} ,the properties are 'name', 'size', 'bold', 'color', 'italic',they are all optional.
    //for example,we assume shape 0 is a textbox object,this will set the font color to Yellow ,and font size to 12pt,and bold the font. 
     const textbox=xs.sheet.data.shapes[0];
     const fontsettings= {'name':'Arial', 'size':12, 'bold':true, 'color':'#FFFF00'}; 
     textbox.setFont(fontsettings);
  • Autoändra bakgrundsfärg och textfärg för att få en visuell aktiv effekt
    setActiveEffect(boolvalue)
    // the parameters are:
        boolvalue: if true,will change background color and the text color of the textbox object;if false,restore to original appearence
  • Dölj/visad textinnehåll i textbox-objektet
    hideText(boolvalue)
    // the parameters are:
        boolvalue: if true,will not display the text in the textbox object;if false,restore to original appearence

för detaljerad information kan du kolla exemplet här https://github.com/aspose-cells/Aspose.Cells.Grid-for-Java/tree/main/Examples.GridJs