❗ “Add Row” and “Add Column” Actions Insert in Incorrect Location in Aspose GridJS & Unfreeze Cell Not Reflected in Saved Copy After JSON Merge in Aspose GridJS

I’m currently using the Paint Format tool from the GridJS toolbar to copy formatting from one cell to another. However, it doesn’t seem to be working as expected. Either:

  • The formatting is not applied to the target cell, or

  • It applies unexpected styles, sometimes to previously selected cells.

I’m not sure if I’m using the tool incorrectly or if there’s a bug in its current implementation.


:mag: Details:

  • Using the Paint Format tool after selecting a cell with bold, background color, or border

  • Then clicking another cell where I want to apply the same formatting

  • But the format is not consistently copied or applied


:pray: Request:

Could you please confirm:

  • The correct usage steps for the Paint Format tool?

  • If there are any known limitations or issues with this tool?

  • And whether this issue is reproducible on your side?

Thanks for your support!

@chirags
The paint format tool is not currently available in the UI. However, we have created a ticket to address this request: CELLSGRIDJS-1780 - Support Format Painter.

Similar to the issue we faced earlier with Unfreeze Panes, we’ve observed the same behavior with the Unfilter operation.


:test_tube: Steps to Reproduce:

  1. Apply a filter to a column using the toolbar → it saves correctly via getUpdateDatas() and mergeJsonData server call.

  2. Then, clear or remove the filter (Unfilter) from the UI → it works fine visually on the client side.

  3. Save the file using the standard method:

    GridJsWorkbook wb = new GridJsWorkbook();
    wb.MergeExcelFileFromJson(uid, jsonStream);
    wb.SaveToCacheWithFileName(uid, filename, password);
    
  4. When downloading the saved file, the filter still appears – indicating the unfilter action was not saved.


:arrows_counterclockwise: Summary of Issue:

  • :white_check_mark: Applying filter: Works fine and saved properly
  • :x: Removing filter (Unfilter): Works visually in UI, not persisted in server-generated file

:pushpin: Request:

Please confirm if this is a known issue and whether the unfilter state is currently captured by getUpdateDatas().
If not, could you guide us on how to explicitly remove filters so the change is persisted correctly in the merged workbook?

Thanks again for your support and previous help with the Unfreeze issue.

@chirags
We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): CELLSGRIDJS-1790 	Unfilter does not work as expected

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.

We’ve encountered another issue related to formatting multiple cells at once using the toolbar — specifically with Bold, Italic, Underline, and similar styling options.


:test_tube: Steps to Reproduce:

  1. Select multiple cells (e.g., 10 or 20 cells) in GridJS.

  2. Click on the Bold button → :white_check_mark: all selected cells become bold as expected.

  3. Without changing the selection, click Bold again to remove the style → :x: only the first cell gets unbolded, the rest remain bold.

The same behavior is observed with:

  • Italic

  • Underline

  • (Possibly other format toggles as well)


:x: Problem:

  • Format is only removed from the first cell in the selection.

  • Visually misleading to users who expect toggle to apply across all selected cells (just like the initial formatting did).


:white_check_mark: What Works:

  • Applying formatting to a selection works fine.

  • Removing formatting works only for single cell or first cell in selection.


:pray: Request:

Could you please confirm if this is a known limitation or bug?

If not, is there a specific method we should use to ensure formatting toggles are applied uniformly across all selected cells?

Thanks again for your continued support and quick responses.

@chirags
We can reproduce this issue.
We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): CELLSGRIDJS-1823 Range format does not work as expected

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.

I’m facing two issues while working with Aspose.Cells + GridJs:


1. Limited Rows & Columns on Initial Load

When the sheet loads in GridJs, it’s only showing about 13 rows (screenshot attached) instead of the expected default Excel grid (e.g., 1048576 rows × 16384 columns).

image.png (4.5 KB)

Could you please confirm:

  • Is GridJs loading rows/columns dynamically based on MaxDisplayRange or existing data?

  • Is there a setting to pre-load more rows/columns on initial load so the user can scroll without adding rows manually?


2. Blank Cells Locked After Protection

On the server side, I’m using the below logic to unlock all cells first, then lock only the cells mentioned in my dtTable configuration.

However, after saving, even blank cells (outside the locked ranges) are locked and can’t be edited in the UI.

Code snippet:


sheet.Cells.MaxDisplayRange.ApplyStyle(unlockStyle, unlockFlag)

This appears to only affect the used range, meaning cells outside MaxDisplayRange (blank area) remain locked because Excel defaults them to locked style.


Expected:

  • Unlock all cells in the worksheet, not just the used range.

  • Only apply locking to the specific cells/ranges from dtTable.


Could you please guide me on:

  • The correct approach to unlock the entire sheet (full row/column range) before applying locks?

  • How to ensure GridJs loads the desired number of rows and columns at sheet initialization?

Thanks for your help and guidance.

@chirags

  1. Is GridJs loading rows/columns dynamically based on MaxDisplayRange or existing data.
    Yes.

in server side:
you can set

Config.EmptySheetMaxCol/Config.EmptySheetMaxRow

or via set GridJsOptions.EmptySheetMaxCol/ EmptySheetMaxRow

 services.Configure<GridJsOptions>(options =>
{
  
    options.FileCacheDirectory = @"D:\tmpdel\storage\wb3";
    options.EmptySheetMaxRow = 50;
}

in Clinet js:
in load options we can set the default empty row/col len

 const option = {
     updateMode: 'server',
     updateUrl: '/GridJs2/UpdateCell',
     showToolbar: true,
     ........
     row: { len:39 },
     col: { len:33}

 };

we can also change the row/col len at runtime

xs.sheet.data.rows.len=100;
xs.sheet.data.cols.len=50;
xs.reRender();

@chirags

Please use Cells.ApplyStyle() method to apply style to the whole sheet.

The issues you have found earlier (filed as CELLSGRIDJS-1787,CELLSGRIDJS-1789,CELLSGRIDJS-1790,CELLSGRIDJS-1823) have been fixed in this update. This message was posted using Bugs notification tool by leoluo

Thank you for all the bug fixes in the new version 25.8 — the improvements are working great.

I noticed one behavior:

  • If I insert a row or column in the middle of the sheet, it saves automatically.

  • But if I insert a row after the last row or a column after the last column, it does not save automatically.

Could you please check if this is expected behavior or if it can be handled in a future update?

Thanks again for the quick fixes and support.

@chirags
the newly added rows or columns will take affect only after you set cell value in those row/column,
otherwise it still treat as empty rows/columns.
when you save the spreadsheet files,you scroll down ,it shows empty rows after the rows which has content, you don’t know how many total rows actually.

In v25.8, adding a hyperlink/link is not saving. Could you please check?

@chirags,

I tested it using the online Excel editor (created by Aspose.Cells.GridJs) and found, in the generated Excel file, the hyperlinks/links are not retained.

We require thorough evaluation of the issue. We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): CELLSGRIDJS-1852

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.

Hi Team,

I noticed a difference in behavior when handling cell updates via the cells-updated event.

Here’s my code:

xs.on('cells-updated', (name, cells) => {                      
    cells.forEach((acell, index, array) => {
        console.log('acell got updated:', acell);
        // acell.text shows current cell value
    });
});

:test_tube: Behavior Observed:

  • When I click Format Cell (e.g., set number format), the value in acell.text does not change immediately.
  • But when I click Percentage format, acell.text shows the updated value directly.

:pushpin: Request:

Could you please check why the behavior is inconsistent between different format options (general/number vs percentage)?
I’ve attached a screenshot showing this difference for reference.

image.png (448 Bytes)
image.png (1.6 KB)
image.png (10.1 KB)

Percentage format
image.png (448 Bytes)
image.png (1.1 KB)
image.png (10.4 KB)

Thanks for your support.

@chirags
Hello, I’ve observed that adjusting the number format options in Format Cell triggers a real-time update of the cell value, thus firing the cells-updated event. I have created a ticket to optimize this.

We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): CELLSGRIDJS-1864

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.

The issues you have found earlier (filed as CELLSGRIDJS-1864,CELLSGRIDJS-1852) have been fixed in this update. This message was posted using Bugs notification tool by leoluo

@chirags
Those issues have been fixed in v25.9. Please have a try.
You shall update serverside to the latest v25.9 version in nuget package.
and the client js to the latest v25.9 version also.

Thank you for the update. We found another issue:

When we load a file and go to the Review tab, clicking on Edit Comment spoils the UI layout.

Steps to reproduce:

  1. Load any file in GridJs.

  2. Do not make any changes.

  3. Go directly to the Review tab.

  4. Click on Edit Comment.

  5. The UI gets spoiled (please check the attached screenshot for reference).

image.png (71.4 KB)
image.png (25.0 KB)

Could you please verify this behavior and confirm if it’s a bug or if there is a specific way to handle the edit option under the Review menu?

Thank you for your support.

@chirags
we cannot reproduce this issue.
by running the latest demo in

or

or in our live app

can you provide your sample project?