Introduction

This post walks through the main feature areas of Aspose.Cells FOSS for Java — a pure-Java 17, MIT-licensed library for creating and manipulating Excel .xlsx workbooks. You will learn how to manage workbooks and worksheets, store typed cell values, apply data validation, use AutoFilter, and control page setup — without any Microsoft Office dependency.

All code examples use classes from the library’s verified API surface. Class and method names shown below exist in version 1.0.0.


Key Features

Workbook and Worksheet Management

The Workbook class implements AutoCloseable so it integrates cleanly with the Java try-with-resources pattern. You can create a blank workbook, load an existing .xlsx file, rename worksheets, add or remove sheets, set the active sheet, and control tab visibility.

import com.aspose.cells_foss.Workbook;
import com.aspose.cells_foss.Worksheet;

try (Workbook workbook = new Workbook()) {
    WorksheetCollection sheets = workbook.getWorksheets();
    Worksheet sheet = sheets.get(0);
    sheet.setName("Q1 Report");
    workbook.getWorksheets().addSheet("Summary");
    workbook.save("report.xlsx");
}

Typed Cell Values and Formulas

The Cell class accepts typed values via putValue() for String, int, double, boolean, and LocalDateTime. The getType() method returns a CellValueType enum value — STRING, NUMBER, BOOLEAN, DATE_TIME, or FORMULA — making it easy to branch on value type without parsing strings. Formula strings are stored with setFormula() and will be recalculated by Excel on open.

import com.aspose.cells_foss.Cell;
import com.aspose.cells_foss.CellValueType;
import com.aspose.cells_foss.Workbook;
import com.aspose.cells_foss.Worksheet;

try (Workbook workbook = new Workbook()) {
    WorksheetCollection sheets = workbook.getWorksheets();
    Worksheet sheet = sheets.get(0);
    Cell a1 = sheet.getCells().get("A1");
    a1.putValue("Revenue");
    Cell b1 = sheet.getCells().get("B1");
    b1.putValue(42500.00);
    Cell c1 = sheet.getCells().get("C1");
    c1.setFormula("=B1*1.2");
    // Check type
    assert b1.getType() == CellValueType.NUMBER;
    assert c1.getType() == CellValueType.FORMULA;
    workbook.save("values.xlsx");
}

Cell Formatting and Styles

Formatting is applied through the Style object retrieved from cell.getStyle() and written back with cell.setStyle(). The Font sub-object exposes setBold() and setColor(). HorizontalAlignment controls text alignment — LEFT, CENTER, or RIGHT. Custom number formats use Excel format strings via style.setCustom(). Row height and column width are adjusted through getRows().get(n).setHeight() and getColumns().get(n).setWidth().

import com.aspose.cells_foss.Cell;
import com.aspose.cells_foss.Style;
import com.aspose.cells_foss.Workbook;
import com.aspose.cells_foss.Worksheet;

try (Workbook workbook = new Workbook()) {
    WorksheetCollection sheets = workbook.getWorksheets();
    Worksheet sheet = sheets.get(0);
    Cell cell = sheet.getCells().get("B1");
    cell.putValue(9999.50);
    Style style = cell.getStyle();
    style.getFont().setBold(true);
    style.setCustom("#,##0.00");
    cell.setStyle(style);
    sheet.getCells().getRows().get(0).setHeight(24.0);
    sheet.getCells().getColumns().get(1).setWidth(16.0);
    workbook.save("styled.xlsx");
}

Data Validation

Data validation rules are added through sheet.getValidations().add(). Each Validation object takes a ValidationType (e.g. WHOLE_NUMBER, DECIMAL, LIST) and an OperatorType (e.g. BETWEEN, GREATER_THAN). Formula bounds are stored as strings via setFormula1() and setFormula2().

import com.aspose.cells_foss.CellArea;
import com.aspose.cells_foss.OperatorType;
import com.aspose.cells_foss.Validation;
import com.aspose.cells_foss.ValidationType;
import com.aspose.cells_foss.Workbook;
import com.aspose.cells_foss.Worksheet;

try (Workbook workbook = new Workbook()) {
    WorksheetCollection sheets = workbook.getWorksheets();
    Worksheet sheet = sheets.get(0);
    int vi = sheet.getValidations().add(new CellArea(1, 0, 10, 0));
    Validation validation = sheet.getValidations().get(vi);
    validation.setType(ValidationType.WHOLE_NUMBER);
    validation.setOperator(OperatorType.BETWEEN);
    validation.setFormula1("1");
    validation.setFormula2("100");
    workbook.save("validated.xlsx");
}

AutoFilter

AutoFilters let end users interactively filter data in Excel without any extra configuration. Call ws.getAutoFilter().setRange() with an A1-notation range to activate filter drop-downs on the specified header range. Additional filter columns and custom criteria can be defined through FilterColumn and AutoFilterCustomFilter.

import com.aspose.cells_foss.Workbook;
import com.aspose.cells_foss.Worksheet;

try (Workbook workbook = new Workbook()) {
    WorksheetCollection sheets = workbook.getWorksheets();
    Worksheet sheet = sheets.get(0);
    sheet.getCells().get("A1").putValue("Product");
    sheet.getCells().get("B1").putValue("Qty");
    sheet.getAutoFilter().setRange("A1:B1");
    workbook.save("filtered.xlsx");
}

Page Setup and Worksheet Protection

The PageSetup class controls paper size, page orientation, and fit-to-page settings for print-ready output. Worksheet protection is applied through protect() with a WorksheetProtectionModel, allowing specific cells to remain editable while locking the rest. Hyperlinks are managed through HyperlinkCollection.


Quick Start

Add the following Maven dependency to your pom.xml to include Aspose.Cells FOSS in your project:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-cells-foss</artifactId>
  <version>26.5.0</version>
</dependency>

Create a workbook with all major features in under 20 lines:

import com.aspose.cells_foss.Cell;
import com.aspose.cells_foss.Style;
import com.aspose.cells_foss.Workbook;
import com.aspose.cells_foss.Worksheet;

public class QuickStart {
    public static void main(String[] args) {
        try (Workbook workbook = new Workbook()) {
            WorksheetCollection sheets = workbook.getWorksheets();
            Worksheet sheet = sheets.get(0);
            sheet.setName("Sales");
            sheet.getCells().get("A1").putValue("Revenue");
            Cell b1 = sheet.getCells().get("B1");
            b1.putValue(42500.00);
            Style style = b1.getStyle();
            style.getFont().setBold(true);
            style.setCustom("#,##0.00");
            b1.setStyle(style);
            sheet.getAutoFilter().setRange("A1:B1");
            workbook.save("sales.xlsx");
        }
    }
}

Supported Formats

FormatExtensionReadWrite
Excel Open XML.xlsx

Saving is currently limited to .xlsx. The library stores and round-trips formulas but does not function as a full spreadsheet calculation engine.


Open Source & Licensing

Aspose.Cells FOSS for Java is released under the MIT license. You are free to use, modify, and distribute it in personal, open-source, and commercial projects without restriction. The source code is available at github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Java.


Getting Started