@chirags
Actually,when you click the download file button.
the save process is:
//in client side
//using getUpdateDatas to get the UI data for update
string jsonDataForUpdate=xs.getUpdateDatas();
//in server side
GridJsWorkbook wb = new GridJsWorkbook();
//merge the update data with the existed spreadsheet file with uid
wb.MergeExcelFileFromJson(uid, jsonDataForUpdate);
wb.SaveToCacheWithFileName(uid, filename, password);
So it works fine through UI operation. the update in UI will merge to server side spreadsheet file.
Thank you for your clarification and confirming that the save flow using xs.getUpdateDatas() works as expected on your side.
However, I would like to emphasize that in my implementation, I am also using the exact same method:
var jsonDataForUpdate = xs.getUpdateDatas();
And passing it to the server like this:
GridJsWorkbook wb = new GridJsWorkbook();
wb.MergeExcelFileFromJson(jsonDataForUpdate, uid);
wb.SaveToCacheWithFileName(uid, filename, password);
Working as Expected:
All these operations are working perfectly and reflected correctly in the saved Excel file.
Not Working:
Even though the UI updates correctly, these two actions are not reflected when I download the file after saving.
This leads me to believe that:
-
xs.getUpdateDatas() may not be capturing these particular state changes (unfreeze, unhide).
-
Or, they require additional flags or client-side logic to include them in the JSON.
@chirags
first you can check the freeze property in the xs.getUpdateDatas api,
just as my screen snapshot,check whether it is become A1 after you do unfreeze.
if this is ok, there maybe issue in server side merge api.
what is the version you use,
can you update to the latest v25.7 version.
image.png (12.7 KB)
image.png (1.7 KB)
Thank you for your continued support.
As per your suggestion, I checked the xs.getUpdateDatas() output after performing the unfreeze operation.
Yes — the freeze value correctly changes to "A1", exactly as shown in your screenshot.
So the client-side data is updating properly.
However, the issue still persists:
-
Even with "freeze": "A1" present in the JSON,
-
When I pass this data to the backend and call MergeExcelFileFromJson(...),
-
The freeze is not removed in the saved Excel file — it still retains the previous frozen state.
Server-Side Details:
I’m using the latest version:
Aspose.Cells v25.7
Backend code:
GridJsWorkbook wb = new GridJsWorkbook();
wb.MergeExcelFileFromJson(uid,jsonDataForUpdate);
wb.SaveToCacheWithFileName(uid, filename, password);
@chirags
We are sorry,
We can reproduce this issue now.
the steps are:
freeze the worksheet in the spreadsheet file.
then load the spreadsheet file in GridJs , do unfreeze,then do save.
we can see the download file still has freezepane in the worksheet.
thank you for your feedback and patience.
@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-1787 Unfreeze 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.
Thank you again for confirming the issue with Unfreeze Panes.
I’d also like to clarify that the problem extends further — currently, both hide and unhide operations for rows and columns are not being saved correctly.
Summary of Issues:
-
Hide Rows – Not saved in the downloaded file
-
Hide Columns – Not saved
-
Unhide Rows – Not saved
-
Unhide Columns – Not saved
-
Unfreeze Panes – Not saved
All of these actions appear to work fine on the GridJS UI, but they are not being reflected when we call xs.getUpdateDatas() and use that JSON with mergeExcelFileFromJson() on the server.
Meanwhile, other operations such as formatting, merging cells, and value editing are working perfectly and are saved correctly.
@chirags
We can reproduce the issue for hide/unhide row/column .
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-1789 Hide and unhide operations for rows and columns are not being saved correctly.
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.
@chirags,
We are pleased to inform you that your issue (Ticket ID: “CELLSGRIDJS-1787”) regarding the unfreeze functionality not working as expected, has been resolved. The fix/enhancement will be incorporated into the upcoming release of Aspose.Cells.GridJs (v25.8), which is scheduled for the first half of August 2025. You will be notified when the new version is published.
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.
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
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.
Steps to Reproduce:
-
Apply a filter to a column using the toolbar → it saves correctly via getUpdateDatas() and mergeJsonData server call.
-
Then, clear or remove the filter (Unfilter) from the UI → it works fine visually on the client side.
-
Save the file using the standard method:
GridJsWorkbook wb = new GridJsWorkbook();
wb.MergeExcelFileFromJson(uid, jsonStream);
wb.SaveToCacheWithFileName(uid, filename, password);
-
When downloading the saved file, the filter still appears – indicating the unfilter action was not saved.
Summary of Issue:
Applying filter: Works fine and saved properly
Removing filter (Unfilter): Works visually in UI, not persisted in server-generated file
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.
Steps to Reproduce:
-
Select multiple cells (e.g., 10 or 20 cells) in GridJS.
-
Click on the Bold button →
all selected cells become bold as expected.
-
Without changing the selection, click Bold again to remove the style →
only the first cell gets unbolded, the rest remain bold.
The same behavior is observed with:
Problem:
What Works:
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:
Thanks for your help and guidance.
@chirags
- 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.