Skip to content

Spreadsheet#addMergedRegion fails if freeze panes are created before it and workbook has data #8094

@myronenkom

Description

@myronenkom

Description

Calling Vaadin Spreadsheet#addMergedRegion fails if createFreezePanes() has been called before and the workbook already contains data.

Actual Result: An error is thrown on addMergedRegion, stack trace attached

AddMergedRegion StackTrace.txt

Repository with reproduction: https://github.com/myronenkom/spreadsheet-issues/blob/main/src/main/java/com/example/application/views/helloworld/AddMergedRegionIssue.java

Expected outcome

The merged region is added without errors.

Minimal reproducible example

        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Test Data Sheet");
        generateSheetData(sheet);

        Spreadsheet spreadsheet = new Spreadsheet(workbook);
        spreadsheet.setSizeFull();
        spreadsheet.createFreezePane(5, 0);
        spreadsheet.addMergedRegion(CellRangeAddress.valueOf("A1:E1")); // commenting this line fixes the issue

        this.add(spreadsheet);

Steps to reproduce

  1. Create a workbook and sheet, and generate some data so that Sheet#getRow returns data.
  2. Create a Vaadin Spreadsheet based on the workbook.
  3. Create freeze panes with a valid rowSplit (e.g., if the sheet has 3 rows of data, specify at most 3).
  4. Add any merged region using the Spreadsheet API.

Environment

Vaadin version(s): 24.9.0
OS: Windows

Browsers

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions