gridjs-spreadsheet 26.7.0 → 26.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{1f345d060b26fa53bc9d78c36441afd6.svg → 9667af4182f3e39eec9844c10e1a6eb8.svg} +34 -7
- package/example/pom.xml +1 -1
- package/index.d.ts +25 -0
- package/package.json +67 -40
- package/readme.md +423 -63
- package/xspreadsheet.css +753 -1
- package/xspreadsheet.js +5 -5
package/readme.md
CHANGED
|
@@ -1,14 +1,51 @@
|
|
|
1
|
-
# gridjs-spreadsheet
|
|
1
|
+
# gridjs-spreadsheet | Lightweight Online Excel Editor & Web Spreadsheet API
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **GridJs-Spreadsheet** is a high-performance, lightweight JavaScript library for building online Excel editors and web-based spreadsheet applications. It provides seamless Excel viewing, editing, and cross-platform deployment with an easy-to-use API.
|
|
4
|
+
>
|
|
5
|
+
> **Now with first-class support for Vue 3, React, and Angular.**
|
|
6
|
+
|
|
7
|
+
## Why Choose GridJs-Spreadsheet?
|
|
8
|
+
|
|
9
|
+
Whether you are building a collaborative document platform, a data management tool, or an Excel viewer for your web app, GridJs-Spreadsheet offers a comprehensive solution with a tiny footprint.
|
|
10
|
+
|
|
11
|
+
- Rich Excel-compatible editing experience — formulas, formatting, charts, images, form controls
|
|
12
|
+
- First-class framework wrappers for **React**, **Vue 3**, and **Angular** — drop-in components with zero boilerplate
|
|
13
|
+
- Full TypeScript declarations for IntelliSense and type safety
|
|
14
|
+
- Server-backed or client-only mode — works with any backend (.NET, Java, Python, Node.js)
|
|
15
|
+
- 17+ UI languages out of the box
|
|
16
|
+
- MIT licensed — free for commercial and open-source projects
|
|
17
|
+
|
|
18
|
+
## Preview
|
|
19
|
+
|
|
20
|
+
<img alt="GridJS spreadsheet preview" src="https://unpkg.com/gridjs-spreadsheet@26.7.0/preview.gif">
|
|
21
|
+
|
|
22
|
+
Quick online demo: <https://products.aspose.app/cells/editor>
|
|
23
|
+
|
|
24
|
+
## Table of Contents
|
|
25
|
+
|
|
26
|
+
- [Installation](#installation)
|
|
27
|
+
- [Package Exports](#package-exports)
|
|
28
|
+
- [Usage](#usage)
|
|
29
|
+
- [Vanilla JavaScript (npm)](#vanilla-javascript-with-npm)
|
|
30
|
+
- [Vanilla HTML (CDN)](#vanilla-html-with-script-tags)
|
|
31
|
+
- [React](#react)
|
|
32
|
+
- [Vue 3](#vue-3)
|
|
33
|
+
- [Angular](#angular)
|
|
34
|
+
- [Framework Adapter API](#framework-adapter-api)
|
|
35
|
+
- [Core API](#core-api)
|
|
36
|
+
- [Features](#features)
|
|
37
|
+
- [Backend Endpoints](#backend-endpoints)
|
|
38
|
+
- [Example Project](#example-project)
|
|
39
|
+
- [Browser Support](#browser-support)
|
|
40
|
+
- [Version History](#version-history)
|
|
41
|
+
- [Resources](#resources)
|
|
42
|
+
- [License](#license)
|
|
4
43
|
|
|
5
|
-
|
|
44
|
+
## About
|
|
6
45
|
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
- Angular
|
|
10
|
-
- Vanilla HTML using npm imports
|
|
11
|
-
- Vanilla HTML using CDN script tags
|
|
46
|
+
GridJs-Spreadsheet allows you to view and edit spreadsheet files directly in the browser. It is developed based on [x-spreadsheet](https://github.com/myliang/x-spreadsheet) and extended with enterprise-grade features including chart rendering, form controls, data redaction, multi-sheet support, and server-side integration APIs.
|
|
47
|
+
|
|
48
|
+
The package includes the core GridJS runtime, TypeScript declarations, and ready-to-use adapters for **React**, **Vue 3**, and **Angular**.
|
|
12
49
|
|
|
13
50
|
## Installation
|
|
14
51
|
|
|
@@ -16,20 +53,33 @@ Version 26.7.0 also publishes a complete Java example containing five independen
|
|
|
16
53
|
npm install gridjs-spreadsheet
|
|
17
54
|
```
|
|
18
55
|
|
|
19
|
-
The framework packages are optional peer dependencies
|
|
56
|
+
The framework packages are optional peer dependencies — install only the framework used by your application:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# install for React
|
|
60
|
+
npm install react react-dom
|
|
61
|
+
|
|
62
|
+
# install for Vue 3
|
|
63
|
+
npm install vue
|
|
64
|
+
|
|
65
|
+
# install for Angular
|
|
66
|
+
npm install @angular/core @angular/common
|
|
67
|
+
```
|
|
20
68
|
|
|
21
|
-
## Package
|
|
69
|
+
## Package Exports
|
|
22
70
|
|
|
23
71
|
| Usage | Import |
|
|
24
72
|
| --- | --- |
|
|
25
73
|
| Core runtime | `gridjs-spreadsheet` |
|
|
26
74
|
| Styles | `gridjs-spreadsheet/xspreadsheet.css` |
|
|
27
|
-
| React | `gridjs-spreadsheet/react` |
|
|
28
|
-
| Vue 3 | `gridjs-spreadsheet/vue` |
|
|
29
|
-
| Angular | `gridjs-spreadsheet/angular` |
|
|
75
|
+
| React component | `gridjs-spreadsheet/react` |
|
|
76
|
+
| Vue 3 component | `gridjs-spreadsheet/vue` |
|
|
77
|
+
| Angular component | `gridjs-spreadsheet/angular` |
|
|
30
78
|
| Shared adapter | `gridjs-spreadsheet/shared` |
|
|
31
79
|
|
|
32
|
-
##
|
|
80
|
+
## Usage
|
|
81
|
+
|
|
82
|
+
### Vanilla JavaScript with npm
|
|
33
83
|
|
|
34
84
|
```html
|
|
35
85
|
<div id="gridjs-demo"></div>
|
|
@@ -46,6 +96,7 @@ const spreadsheet = new Spreadsheet('#gridjs-demo', {
|
|
|
46
96
|
updateMode: 'server',
|
|
47
97
|
updateUrl: '/GridJs2/UpdateCell',
|
|
48
98
|
mode: 'edit',
|
|
99
|
+
// Support 17+ languages: en, cn, es, pt, de, ru, nl, ar, fr, id, it, ja, ko, th, tr, vi, cht
|
|
49
100
|
local: 'en',
|
|
50
101
|
});
|
|
51
102
|
|
|
@@ -54,7 +105,7 @@ spreadsheet.setUniqueId(workbookJson.uniqueid);
|
|
|
54
105
|
spreadsheet.setFileName(workbookJson.filename);
|
|
55
106
|
```
|
|
56
107
|
|
|
57
|
-
|
|
108
|
+
### Vanilla HTML with script tags
|
|
58
109
|
|
|
59
110
|
```html
|
|
60
111
|
<link
|
|
@@ -63,7 +114,7 @@ spreadsheet.setFileName(workbookJson.filename);
|
|
|
63
114
|
>
|
|
64
115
|
|
|
65
116
|
<script src="https://unpkg.com/jszip@3.10.1/dist/jszip.min.js"></script>
|
|
66
|
-
<script src="https://unpkg.com/gridjs-spreadsheet
|
|
117
|
+
<script src="https://unpkg.com/gridjs-spreadsheet/xspreadsheet.js"></script>
|
|
67
118
|
|
|
68
119
|
<div id="gridjs-demo"></div>
|
|
69
120
|
|
|
@@ -79,7 +130,7 @@ spreadsheet.setFileName(workbookJson.filename);
|
|
|
79
130
|
</script>
|
|
80
131
|
```
|
|
81
132
|
|
|
82
|
-
|
|
133
|
+
### React
|
|
83
134
|
|
|
84
135
|
```jsx
|
|
85
136
|
import { useState } from 'react';
|
|
@@ -97,13 +148,15 @@ export default function App() {
|
|
|
97
148
|
locale="en"
|
|
98
149
|
height="600px"
|
|
99
150
|
onReady={(instance, adapter) => console.log('ready', instance, adapter)}
|
|
151
|
+
onChange={(...args) => console.log('changed', args)}
|
|
152
|
+
onCellSelected={(...args) => console.log('cell selected', args)}
|
|
100
153
|
onError={(error) => console.error(error)}
|
|
101
154
|
/>
|
|
102
155
|
);
|
|
103
156
|
}
|
|
104
157
|
```
|
|
105
158
|
|
|
106
|
-
|
|
159
|
+
### Vue 3
|
|
107
160
|
|
|
108
161
|
```vue
|
|
109
162
|
<template>
|
|
@@ -113,6 +166,8 @@ export default function App() {
|
|
|
113
166
|
locale="en"
|
|
114
167
|
height="600px"
|
|
115
168
|
@ready="onReady"
|
|
169
|
+
@change="onChange"
|
|
170
|
+
@cell-selected="onCellSelected"
|
|
116
171
|
@error="onError"
|
|
117
172
|
/>
|
|
118
173
|
</template>
|
|
@@ -124,11 +179,13 @@ import 'gridjs-spreadsheet/xspreadsheet.css';
|
|
|
124
179
|
|
|
125
180
|
const sheetData = ref(null);
|
|
126
181
|
const onReady = (instance, adapter) => console.log('ready', instance, adapter);
|
|
182
|
+
const onChange = (...args) => console.log('changed', args);
|
|
183
|
+
const onCellSelected = (...args) => console.log('cell selected', args);
|
|
127
184
|
const onError = error => console.error(error);
|
|
128
185
|
</script>
|
|
129
186
|
```
|
|
130
187
|
|
|
131
|
-
|
|
188
|
+
### Angular
|
|
132
189
|
|
|
133
190
|
```ts
|
|
134
191
|
import { Component } from '@angular/core';
|
|
@@ -145,6 +202,8 @@ import { GridJsSpreadsheetComponent } from 'gridjs-spreadsheet/angular';
|
|
|
145
202
|
locale="en"
|
|
146
203
|
height="600px"
|
|
147
204
|
(ready)="onReady($event)"
|
|
205
|
+
(change)="onChange($event)"
|
|
206
|
+
(cellSelected)="onCellSelected($event)"
|
|
148
207
|
(error)="onError($event)"
|
|
149
208
|
/>
|
|
150
209
|
`,
|
|
@@ -152,6 +211,8 @@ import { GridJsSpreadsheetComponent } from 'gridjs-spreadsheet/angular';
|
|
|
152
211
|
export class AppComponent {
|
|
153
212
|
sheetData: any = null;
|
|
154
213
|
onReady(event: any) { console.log('ready', event); }
|
|
214
|
+
onChange(args: any[]) { console.log('changed', args); }
|
|
215
|
+
onCellSelected(args: any[]) { console.log('cell selected', args); }
|
|
155
216
|
onError(error: any) { console.error(error); }
|
|
156
217
|
}
|
|
157
218
|
```
|
|
@@ -165,77 +226,376 @@ Add the GridJS stylesheet to `angular.json`:
|
|
|
165
226
|
]
|
|
166
227
|
```
|
|
167
228
|
|
|
168
|
-
## Framework
|
|
229
|
+
## Framework Adapter API
|
|
169
230
|
|
|
170
231
|
The React, Vue, and Angular adapters share the same configuration model:
|
|
171
232
|
|
|
172
|
-
| Option | Description |
|
|
173
|
-
| --- | --- |
|
|
174
|
-
| `apiBase` |
|
|
175
|
-
| `data` | Workbook JSON returned by the GridJS backend |
|
|
176
|
-
| `loader` |
|
|
177
|
-
| `mode` | `edit`
|
|
178
|
-
| `locale` |
|
|
179
|
-
| `token` |
|
|
180
|
-
| `height` | Component height |
|
|
181
|
-
| `showToolbar` | Show or hide the toolbar |
|
|
182
|
-
| `showContextmenu` | Show or hide the context menu |
|
|
233
|
+
| Option | Type | Default | Description |
|
|
234
|
+
| --- | --- | --- | --- |
|
|
235
|
+
| `apiBase` | `string` | `''` | Prefix for GridJS backend endpoints |
|
|
236
|
+
| `data` | `object` | `null` | Workbook JSON returned by the GridJS backend |
|
|
237
|
+
| `loader` | `function` | `null` | Async function that returns workbook JSON |
|
|
238
|
+
| `mode` | `'edit' \| 'read'` | `'edit'` | Editing mode |
|
|
239
|
+
| `locale` | `string` | `'en'` | UI language locale |
|
|
240
|
+
| `token` | `string` | `''` | Authorization token for server requests |
|
|
241
|
+
| `height` | `string \| number` | `'calc(100vh - 96px)'` | Component height |
|
|
242
|
+
| `showToolbar` | `boolean` | `true` | Show or hide the toolbar |
|
|
243
|
+
| `showContextmenu` | `boolean` | `true` | Show or hide the context menu |
|
|
183
244
|
|
|
184
|
-
|
|
245
|
+
**Events:** All adapters expose `ready`, `change`, `error`, `cellSelected`, `cellEdited`, `sheetSelected`, and `sheetLoaded` events using each framework's normal event conventions.
|
|
185
246
|
|
|
186
|
-
GridJS requires a browser DOM.
|
|
247
|
+
> **Note:** GridJS requires a browser DOM. When using SSR frameworks (Next.js, Nuxt, Angular Universal), mount the adapters on the client side only.
|
|
187
248
|
|
|
188
|
-
##
|
|
249
|
+
## Core API
|
|
189
250
|
|
|
190
|
-
The
|
|
251
|
+
The core `Spreadsheet` class provides a rich JavaScript API:
|
|
191
252
|
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
253
|
+
```js
|
|
254
|
+
const xs = new Spreadsheet('#container', options);
|
|
255
|
+
|
|
256
|
+
// Load data
|
|
257
|
+
xs.loadData(jsonData);
|
|
258
|
+
|
|
259
|
+
// Bind events
|
|
260
|
+
xs.on('cell-selected', (cell, ri, ci) => { });
|
|
261
|
+
xs.on('cells-selected', (cell, { sri, sci, eri, eci }) => { });
|
|
262
|
+
xs.on('cell-edited', (text, ri, ci) => { });
|
|
263
|
+
xs.on('object-selected', (obj) => { });
|
|
264
|
+
xs.on('cells-updated', (name, cells) => { });
|
|
265
|
+
xs.on('rows-inserted', (ri, n) => { });
|
|
266
|
+
xs.on('columns-inserted', (ci, n) => { });
|
|
267
|
+
xs.on('rows-deleted', (ri, n) => { });
|
|
268
|
+
xs.on('columns-deleted', (ci, n) => { });
|
|
269
|
+
xs.on('cells-deleted', (range) => { });
|
|
270
|
+
|
|
271
|
+
// Cell operations
|
|
272
|
+
xs.cellText(5, 5, 'Hello');
|
|
273
|
+
xs.cell(ri, ci);
|
|
274
|
+
xs.cellStyle(ri, ci);
|
|
275
|
+
|
|
276
|
+
// Sheet operations
|
|
277
|
+
xs.setActiveSheet(index);
|
|
278
|
+
xs.setActiveSheetByName('Sheet2');
|
|
279
|
+
xs.setActiveCell(rowIndex, colIndex);
|
|
280
|
+
xs.getData();
|
|
281
|
+
|
|
282
|
+
// Server integration
|
|
283
|
+
xs.setUniqueId('workbook-id');
|
|
284
|
+
xs.setFileName('report.xlsx');
|
|
285
|
+
xs.refreshToken(token);
|
|
286
|
+
|
|
287
|
+
// Cleanup
|
|
288
|
+
xs.destroy();
|
|
196
289
|
```
|
|
197
290
|
|
|
198
|
-
|
|
291
|
+
Full API documentation: [API Reference](https://docs.aspose.com/cells/net/aspose-cells-gridjs/how-to-use-gridjs-client-api/)
|
|
199
292
|
|
|
200
|
-
|
|
201
|
-
|
|
293
|
+
### Default Options
|
|
294
|
+
|
|
295
|
+
```js
|
|
296
|
+
{
|
|
297
|
+
mode: 'edit', // 'edit' | 'read'
|
|
298
|
+
showToolbar: true,
|
|
299
|
+
showGrid: true,
|
|
300
|
+
showContextmenu: true,
|
|
301
|
+
view: {
|
|
302
|
+
height: () => document.documentElement.clientHeight,
|
|
303
|
+
width: () => document.documentElement.clientWidth,
|
|
304
|
+
},
|
|
305
|
+
row: { len: 100, height: 25 },
|
|
306
|
+
col: { len: 26, width: 100, indexWidth: 60, minWidth: 60 },
|
|
307
|
+
style: {
|
|
308
|
+
bgcolor: '#ffffff',
|
|
309
|
+
align: 'left',
|
|
310
|
+
valign: 'middle',
|
|
311
|
+
textwrap: false,
|
|
312
|
+
color: '#0a0a0a',
|
|
313
|
+
font: { name: 'Helvetica', size: 10, bold: false, italic: false },
|
|
314
|
+
},
|
|
315
|
+
}
|
|
202
316
|
```
|
|
203
317
|
|
|
204
|
-
|
|
318
|
+
## Features
|
|
319
|
+
|
|
320
|
+
### Rich Editing & Formatting
|
|
321
|
+
- Font / Font size / Bold / Italic / Underline / Strikethrough
|
|
322
|
+
- Text color / Alignment / Text wrapping
|
|
323
|
+
- Fill color / Highlight
|
|
324
|
+
- Number format / Rich text support
|
|
325
|
+
- Borders / Conditional formatting
|
|
326
|
+
- Format painter / Clear format
|
|
327
|
+
|
|
328
|
+
### Data Management & Analysis
|
|
329
|
+
- Full formula support
|
|
330
|
+
- Filter / Sort rows and columns
|
|
331
|
+
- Data validations (including multi-select lists)
|
|
332
|
+
- Copy / Cut / Paste / Autofill — including from MS Excel
|
|
333
|
+
- Merge cells / Freeze panes
|
|
334
|
+
- Insert / Delete rows and columns
|
|
335
|
+
- Resize row height / column width
|
|
336
|
+
- Zoom in / out
|
|
337
|
+
- Search and replace
|
|
338
|
+
- Statistics information in the status bar
|
|
339
|
+
|
|
340
|
+
### Visuals & Objects
|
|
341
|
+
- Charts rendering (bar, line, pie, area, and more)
|
|
342
|
+
- Conditional formatting icons
|
|
343
|
+
- Shape / Image resize, rotate, and position adjustment
|
|
344
|
+
- Insert / Delete / Copy shapes and images
|
|
345
|
+
- Form controls / ActiveX controls display
|
|
346
|
+
- Insert / Delete form controls
|
|
347
|
+
- Two-color gradient fill effects
|
|
348
|
+
|
|
349
|
+
### Security & Advanced Tools
|
|
350
|
+
- Data redaction — burn sensitive data permanently
|
|
351
|
+
- Comments — add / edit / delete
|
|
352
|
+
- Hyperlinks — add / delete
|
|
353
|
+
- Print support
|
|
354
|
+
- Localization — 17+ UI languages
|
|
355
|
+
- Mobile responsive compatibility
|
|
356
|
+
- Custom toolbar buttons
|
|
357
|
+
- Lazy loading for large workbooks
|
|
358
|
+
|
|
359
|
+
## Backend Endpoints
|
|
360
|
+
|
|
361
|
+
The adapters use the standard Aspose.Cells GridJs endpoints:
|
|
362
|
+
|
|
363
|
+
- `/GridJs2/UpdateCell` — cell update
|
|
364
|
+
- `/GridJs2/ImageUrl` — image retrieval
|
|
365
|
+
- `/GridJs2/AddImage` — upload local image
|
|
366
|
+
- `/GridJs2/AddImageByURL` — upload image by URL
|
|
367
|
+
- `/GridJs2/CopyImage` — copy image
|
|
368
|
+
- `/GridJs2/Download` — file download
|
|
369
|
+
- `/GridJs2/Ole` — OLE object download
|
|
370
|
+
- `/GridJs2/LazyLoadingStreamJson` — lazy loading
|
|
371
|
+
|
|
372
|
+
## Example Project
|
|
373
|
+
|
|
374
|
+
The package includes a complete `example/` directory with a Spring Boot backend and five independent frontend demos (React, Vue 3, Angular, Vanilla npm, Vanilla CDN).
|
|
205
375
|
|
|
206
376
|
```bash
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
377
|
+
cp -R node_modules/gridjs-spreadsheet/example ./gridjs-example
|
|
378
|
+
cd gridjs-example
|
|
379
|
+
./mvnw spring-boot:run -Dmaven.test.skip=true
|
|
210
380
|
```
|
|
211
381
|
|
|
212
382
|
See [`example/README.md`](example/README.md) for all framework commands, ports, backend configuration, and troubleshooting.
|
|
213
383
|
|
|
214
|
-
|
|
384
|
+
Additional demos for .NET, Java, and Python:
|
|
215
385
|
|
|
216
|
-
|
|
386
|
+
- <https://github.com/aspose-cells/Aspose.Cells.Grid-for-.NET/tree/master/Examples_GridJs>
|
|
387
|
+
- <https://github.com/aspose-cells/Aspose.Cells.Grid-for-Java/tree/master/Examples.GridJs>
|
|
388
|
+
- <https://github.com/aspose-cells/Aspose.Cells.Grid-for-Python-via-.NET/tree/main/Examples.GridJs>
|
|
217
389
|
|
|
218
|
-
|
|
219
|
-
- `/GridJs2/ImageUrl`
|
|
220
|
-
- `/GridJs2/AddImage`
|
|
221
|
-
- `/GridJs2/AddImageByURL`
|
|
222
|
-
- `/GridJs2/CopyImage`
|
|
223
|
-
- `/GridJs2/Download`
|
|
224
|
-
- `/GridJs2/Ole`
|
|
225
|
-
- `/GridJs2/LazyLoadingStreamJson`
|
|
390
|
+
## Browser Support
|
|
226
391
|
|
|
227
|
-
|
|
392
|
+
Modern browsers — Chrome, Firefox, Safari, Edge.
|
|
228
393
|
|
|
229
|
-
##
|
|
394
|
+
## Version History
|
|
230
395
|
|
|
231
|
-
<
|
|
396
|
+
<details>
|
|
397
|
+
<summary><strong>v26.8</strong> — Support redaction for entire sheet</summary>
|
|
398
|
+
|
|
399
|
+
- Support redaction for entire sheet
|
|
400
|
+
- Support redaction for sheet name
|
|
401
|
+
</details>
|
|
402
|
+
|
|
403
|
+
<details>
|
|
404
|
+
<summary><strong>v26.7.1</strong> — Improve performance for redaction</summary>
|
|
405
|
+
|
|
406
|
+
- Improve performance for redaction
|
|
407
|
+
</details>
|
|
408
|
+
|
|
409
|
+
<details>
|
|
410
|
+
<summary><strong>v26.7</strong> — Fix issue for filter in merge area</summary>
|
|
411
|
+
|
|
412
|
+
- Fix issue for filter in merge area
|
|
413
|
+
</details>
|
|
414
|
+
|
|
415
|
+
<details>
|
|
416
|
+
<summary><strong>v26.6</strong> — Improve redaction</summary>
|
|
417
|
+
|
|
418
|
+
- Improve redaction feature
|
|
419
|
+
- Fix redaction font issue
|
|
420
|
+
- Fix redaction transparent view issue
|
|
421
|
+
</details>
|
|
422
|
+
|
|
423
|
+
<details>
|
|
424
|
+
<summary><strong>v26.5</strong> — Custom toolbar buttons, date picker, filter, print</summary>
|
|
425
|
+
|
|
426
|
+
- Support add custom buttons in toolbar
|
|
427
|
+
- Improve date picker
|
|
428
|
+
- Improve filter display
|
|
429
|
+
- Improve print
|
|
430
|
+
- Improve scroll in zoom
|
|
431
|
+
</details>
|
|
432
|
+
|
|
433
|
+
<details>
|
|
434
|
+
<summary><strong>v26.4</strong> — Redaction, shape lock, zoom snap</summary>
|
|
435
|
+
|
|
436
|
+
- Add redaction features
|
|
437
|
+
- Fix paste scroll issue
|
|
438
|
+
- Support shape lock
|
|
439
|
+
- Support snap to cell area in zoom in/out
|
|
440
|
+
- Add boundary check for redaction
|
|
441
|
+
</details>
|
|
442
|
+
|
|
443
|
+
<details>
|
|
444
|
+
<summary><strong>v26.3</strong> — Improve filter/validations/charts</summary>
|
|
445
|
+
|
|
446
|
+
- Improve filter/validations/charts
|
|
447
|
+
</details>
|
|
448
|
+
|
|
449
|
+
<details>
|
|
450
|
+
<summary><strong>v26.2</strong> — Performance improvement for large rows</summary>
|
|
451
|
+
|
|
452
|
+
- Improve client performance for large rows
|
|
453
|
+
</details>
|
|
454
|
+
|
|
455
|
+
<details>
|
|
456
|
+
<summary><strong>v26.1</strong> — Rotated text highlight, more charts</summary>
|
|
457
|
+
|
|
458
|
+
- Support highlight text with rotation
|
|
459
|
+
- Support more charts rendering in client
|
|
460
|
+
</details>
|
|
461
|
+
|
|
462
|
+
<details>
|
|
463
|
+
<summary><strong>v25.12</strong> — Sort by color, multi-select validation</summary>
|
|
464
|
+
|
|
465
|
+
- Support sort by cell color/font color
|
|
466
|
+
- Support add multiple selection validation list
|
|
467
|
+
</details>
|
|
468
|
+
|
|
469
|
+
<details>
|
|
470
|
+
<summary><strong>v25.11</strong> — Chart fill colors, color picker</summary>
|
|
471
|
+
|
|
472
|
+
- Support fill color settings for charts
|
|
473
|
+
- Support 'Fill Color' and 'Font Color' button dropdown selection and click to fill
|
|
474
|
+
</details>
|
|
475
|
+
|
|
476
|
+
<details>
|
|
477
|
+
<summary><strong>v25.10</strong> — Custom toast, modal CSS</summary>
|
|
478
|
+
|
|
479
|
+
- Support APIs to set customToast
|
|
480
|
+
- Support CSS identify for model window
|
|
481
|
+
</details>
|
|
482
|
+
|
|
483
|
+
<details>
|
|
484
|
+
<summary><strong>v25.9</strong> — Pattern fill style</summary>
|
|
485
|
+
|
|
486
|
+
- Support to render pattern style for cell
|
|
487
|
+
</details>
|
|
488
|
+
|
|
489
|
+
<details>
|
|
490
|
+
<summary><strong>v25.8</strong> — Auto text wrap, textbox font</summary>
|
|
491
|
+
|
|
492
|
+
- Support automatic text wrapping
|
|
493
|
+
- Support API to apply font setting in textbox control
|
|
494
|
+
</details>
|
|
495
|
+
|
|
496
|
+
<details>
|
|
497
|
+
<summary><strong>v25.7</strong> — Editable range, worksheet/comment/range APIs</summary>
|
|
498
|
+
|
|
499
|
+
- Support APIs to enable/disable editable range
|
|
500
|
+
- Support APIs to add/modify/delete worksheet
|
|
501
|
+
- Support APIs to add/modify/delete comment
|
|
502
|
+
- Support APIs to set attribute for range of cells
|
|
503
|
+
- Support APIs to delete for range of cells
|
|
504
|
+
</details>
|
|
505
|
+
|
|
506
|
+
<details>
|
|
507
|
+
<summary><strong>v25.6</strong> — Resize/hide rows and columns</summary>
|
|
508
|
+
|
|
509
|
+
- Support APIs for resize rows/columns
|
|
510
|
+
- Support APIs for hide/unhide rows/columns
|
|
511
|
+
</details>
|
|
512
|
+
|
|
513
|
+
<details>
|
|
514
|
+
<summary><strong>v25.5</strong> — Polish locale, row/column APIs</summary>
|
|
515
|
+
|
|
516
|
+
- Add support for Polish menus
|
|
517
|
+
- Support APIs for insert/delete rows/columns
|
|
518
|
+
</details>
|
|
519
|
+
|
|
520
|
+
<details>
|
|
521
|
+
<summary><strong>v25.4</strong> — Status bar statistics</summary>
|
|
522
|
+
|
|
523
|
+
- Support show statistics information in the lower right corner when cells are selected
|
|
524
|
+
</details>
|
|
525
|
+
|
|
526
|
+
<details>
|
|
527
|
+
<summary><strong>v25.3</strong> — Shortcut keys, multi-area paste</summary>
|
|
528
|
+
|
|
529
|
+
- Support more shortcut keys
|
|
530
|
+
- Support pasting the content copied from Excel to multiple target areas
|
|
531
|
+
</details>
|
|
532
|
+
|
|
533
|
+
<details>
|
|
534
|
+
<summary><strong>v25.2</strong> — Excel paste, auto operations</summary>
|
|
535
|
+
|
|
536
|
+
- Support copy/paste from MS-Excel
|
|
537
|
+
- Enhancement for automatic operations — extending blank row/column, page scrolling, etc.
|
|
538
|
+
</details>
|
|
539
|
+
|
|
540
|
+
<details>
|
|
541
|
+
<summary><strong>v25.1</strong> — Excel copy/paste</summary>
|
|
542
|
+
|
|
543
|
+
- Support copy/paste from MS-Excel
|
|
544
|
+
</details>
|
|
545
|
+
|
|
546
|
+
<details>
|
|
547
|
+
<summary><strong>v24.12</strong> — HTML nodes, multi-instance, row/column events</summary>
|
|
548
|
+
|
|
549
|
+
- Support API to show HTML nodes and interact with HTML nodes at specified cell positions
|
|
550
|
+
- Support pre-check event for row/column delete/insert operations
|
|
551
|
+
- Support row/column insert/delete events for client APIs
|
|
552
|
+
- Support events for updating cells
|
|
553
|
+
- Support multiple instances on one page
|
|
554
|
+
</details>
|
|
555
|
+
|
|
556
|
+
<details>
|
|
557
|
+
<summary><strong>v24.11</strong> — Rich text display</summary>
|
|
558
|
+
|
|
559
|
+
- Improve the display of rich text cell values
|
|
560
|
+
</details>
|
|
561
|
+
|
|
562
|
+
<details>
|
|
563
|
+
<summary><strong>v24.10</strong> — Show formulas</summary>
|
|
564
|
+
|
|
565
|
+
- Support a view option to show formulas
|
|
566
|
+
</details>
|
|
567
|
+
|
|
568
|
+
<details>
|
|
569
|
+
<summary><strong>v24.9.1</strong> — Initial release</summary>
|
|
570
|
+
|
|
571
|
+
- Fix bug that fail to insert column in the new added worksheet
|
|
572
|
+
- Fix bug that fail to rename worksheet
|
|
573
|
+
- Support lazy loading
|
|
574
|
+
</details>
|
|
232
575
|
|
|
233
576
|
## Resources
|
|
234
577
|
|
|
235
|
-
|
|
236
|
-
- [
|
|
237
|
-
- [
|
|
238
|
-
- [
|
|
578
|
+
### Documentation
|
|
579
|
+
- [Developer's Guide — .NET / C#](https://docs.aspose.com/cells/net/aspose-cells-gridjs/)
|
|
580
|
+
- [Developer's Guide — Java](https://docs.aspose.com/cells/java/aspose-cells-gridjs/)
|
|
581
|
+
- [Developer's Guide — Python](https://docs.aspose.com/cells/python-net/aspose-cells-gridjs/)
|
|
582
|
+
- [Client API How-To](https://docs.aspose.com/cells/net/aspose-cells-gridjs/how-to-use-gridjs-client-api/)
|
|
583
|
+
|
|
584
|
+
### Product Links
|
|
585
|
+
- [Aspose.Cells Product Page](https://products.aspose.com/cells)
|
|
586
|
+
- [GridJs Online Demo](https://products.aspose.app/cells/editor)
|
|
587
|
+
- [API Reference — .NET / C#](https://reference.aspose.com/cells/net/aspose.cells.gridjs/)
|
|
588
|
+
- [API Reference — Java](https://reference.aspose.com/cells/java/com.aspose.gridjs/)
|
|
589
|
+
- [API Reference — Python](https://reference.aspose.com/cells/python-net/aspose.cellsgridjs/)
|
|
590
|
+
- [Blog](https://blog.aspose.com/categories/aspose.cells-product-family/)
|
|
591
|
+
|
|
592
|
+
### Source Code & Samples
|
|
593
|
+
- [.NET Examples](https://github.com/aspose-cells/Aspose.Cells.Grid-for-.NET/tree/main/Examples_GridJs)
|
|
594
|
+
- [Java Examples](https://github.com/aspose-cells/Aspose.Cells.Grid-for-Java/tree/master/Examples.GridJs)
|
|
595
|
+
- [Python Examples](https://github.com/aspose-cells/Aspose.Cells.Grid-for-Python-via-.NET/tree/main/Examples.GridJs)
|
|
596
|
+
|
|
597
|
+
### Free Support
|
|
598
|
+
- [Aspose.Cells Forum](https://forum.aspose.com/c/cells) — ask questions, request features, report bugs
|
|
239
599
|
|
|
240
600
|
## License
|
|
241
601
|
|