Document Solutions for Excel, Java Edition | Document Solutions
Features / Group / Outline Column
In This Topic
    Outline Column
    In This Topic

    Outline columns can be used to organize large amounts of data into meaningful groups.

    DsExcel allows you to add outline columns to view hierarchical data in a tree view and show or hide it from view. The getOutlineColumn method of IWorksheet interface can be used to add the outline column. The row outlines are automatically created by adding the outline column. When a worksheet is saved to Excel, the outline column is not displayed but the row outlines are retained.

    The indent level of a cell can be set by using the setIndentLevel method of the IRange interface. The maximum indentation level can be set by using setMaxLevel method of IOutlineColumn interface whose default value is 10. 

    The outline column can also be exported to PDF and imported or exported to JSON to interact with SpreadJS.

    Using Code

    Refer to the below example code to create outline column.

    C#
    Copy Code
    // create a new workbook
     Workbook workbook = new Workbook();
     IWorksheet worksheet = workbook.getWorksheets().get(0);
    
     // Set data.
     Object[][] data = new Object[][] { { "Preface", "1", 1, 0 }, { "Java SE5 and SE6", "1.1", 2, 1 },
     { "Java SE6", "1.1.1", 2, 2 }, { "The 4th edition", "1.2", 2, 1 }, { "Changes", "1.2.1", 3, 2 },
     { "Note on the cover design", "1.3", 4, 1 }, { "Acknowledgements", "1.4", 4, 1 },
     { "Introduction", "2", 9, 0 }, { "Prerequisites", "2.1", 9, 1 }, { "Learning Java", "2.2", 10, 1 },
     { "Goals", "2.3", 10, 1 }, { "Teaching from this book", "2.4", 11, 1 },
     { "JDK HTML documentation", "2.5", 11, 1 }, { "Exercises", "2.6", 12, 1 },
     { "Foundations for Java", "2.7", 12, 1 }, { "Source code", "2.8", 12, 1 },
     { "Coding standards", "2.8.1", 14, 2 }, { "Errors", "2.9", 14, 1 },
     { "Introduction to Objects", "3", 15, 0 }, { "The progress of abstraction", "3.1", 15, 1 },
     { "An object has an interface", "3.2", 17, 1 }, { "An object provides services", "3.3", 18, 1 },
     { "The hidden implementation", "3.4", 19, 1 }, { "Reusing the implementation", "3.5", 20, 1 },
     { "Inheritance", "3.6", 21, 1 }, { "Is-a vs. is-like-a relationships", "3.6.1", 24, 2 },
     { "Interchangeable objects with polymorphism", "3.7", 25, 1 },
     { "The singly rooted hierarchy", "3.8", 28, 1 }, { "Containers", "3.9", 28, 1 },
     { "Parameterized types (Generics)", "3.10", 29, 1 }, { "Object creation & lifetime", "3.11", 30, 1 },
     { "Exception handling: dealing with errors", "3.12", 31, 1 },
     { "Concurrent programming", "3.13", 32, 1 }, { "Java and the Internet", "3.14", 33, 1 },
     { "What is the Web?", "3.14.1", 33, 2 }, { "Client-side programming", "3.14.2", 34, 2 },
     { "Server-side programming", "3.14.3", 38, 2 }, { "Summary", "3.15", 38, 1 } };
     worksheet.getRange("A1:C38").setValue(data);
    
     // Set ColumnWidth.
     worksheet.getRange("A:A").setColumnWidthInPixel(310);
     worksheet.getRange("B:C").setColumnWidthInPixel(150);
    
     // Set IndentLevel.
     for (int i = 0; i < data.length; i++) {
     worksheet.getRange(i, 0).setIndentLevel((int) data[i][3]);
     }
     // Show the summary row above the detail rows.
     worksheet.getOutline().setSummaryRow(SummaryRow.Above);
    
     // Don't show the row outline when interacting with SJS, the exported excel file
     // still show the row outline.
     worksheet.setShowRowOutline(false);
    
     // Set outline column, the corresponding row outlines will also be automatically
     // created.
     worksheet.getOutlineColumn().setColumnIndex(0);
     worksheet.getOutlineColumn().setShowCheckBox(true);
     worksheet.getOutlineColumn().setShowImage(true);
     worksheet.getOutlineColumn().setMaxLevel(2);
    
     worksheet.getOutlineColumn().getImages()
     .add(new ImageSource(new FileInputStream("archiverFolder.png"), ImageType.PNG));
     worksheet.getOutlineColumn().getImages()
     .add(new ImageSource(new FileInputStream("newFloder.png"), ImageType.PNG));
     worksheet.getOutlineColumn().getImages()
     .add(new ImageSource(new FileInputStream("docFile.png"), ImageType.PNG));
     worksheet.getOutlineColumn()
     .setCollapseIndicator(new ImageSource(new FileInputStream("decreaseIndicator.png"), ImageType.PNG));
     worksheet.getOutlineColumn()
     .setExpandIndicator(new ImageSource(new FileInputStream("increaseIndicator.png"), ImageType.PNG));
    
     worksheet.getOutlineColumn().setCheckStatus(0, true);
     worksheet.getOutlineColumn().setCollapsed(1, true);
    
     // MSExcel does not support the outline column, so when exporting to the excel file,
     // The checkbox, level images, expand&collapse images are not visible.
     // But the data is seen with heirarchical structure.
    
     // save to an excel and PDF file
     workbook.save("outlinecolumn.pdf");
     workbook.save("outlinecolumn.xlsx");
    Note: The images, checkbox, expand or collapse indicator images are not visible in Excel as it does not supports them but they can be viewed in PDF and SpreadJS.

     The below image shows the Excel output of above code snippet: 

    Excel output

      The below image shows the PDF output of above code snippet:

    PDF output