Введение

Класс Cell является базовым элементом в Aspose.Cells FOSS для Java. Он хранит типизированные значения, раскрывает их тип во время выполнения через перечисление CellValueType, сохраняет строки формул для оценки Excel и предоставляет единообразное строковое представление через getStringValue(). В этом посте подробно рассматривается основной API ячейки с проверенными примерами.

Все примеры кода ниже используют зависимость Maven:

<dependency>
  <groupId>com.aspose</groupId>
  <artifactId>cells-foss</artifactId>
  <version>1.0.0</version>
</dependency>

Core Cell API

Сохранение типизированных значений с помощью putValue()

Cell.putValue() принимает шесть типов Java: String, int, double, boolean, LocalDateTime и Object. Каждый вызов устанавливает внутреннее значение ячейки и определяет CellValueType, возвращаемый cell.getType().

import com.aspose.cells_foss.Cell;
import com.aspose.cells_foss.CellValueType;
import com.aspose.cells_foss.Workbook;
import com.aspose.cells_foss.Worksheet;
import java.time.LocalDateTime;

try (Workbook workbook = new Workbook()) {
    Worksheet sheet = workbook.getWorksheets().get(0);

    Cell a1 = sheet.getCells().get("A1");
    a1.putValue("Revenue");
    assert a1.getType() == CellValueType.STRING;

    Cell b1 = sheet.getCells().get("B1");
    b1.putValue(42500.75);
    assert b1.getType() == CellValueType.NUMBER;

    Cell c1 = sheet.getCells().get("C1");
    c1.putValue(true);
    assert c1.getType() == CellValueType.BOOLEAN;

    Cell d1 = sheet.getCells().get("D1");
    d1.putValue(LocalDateTime.of(2026, 4, 27, 9, 0, 0));
    assert d1.getType() == CellValueType.DATE_TIME;

    workbook.save("typed.xlsx");
}

Пустые ячейки возвращают CellValueType.BLANK из getType(). Целочисленные значения, сохранённые с помощью putValue(int), проходят круговой процесс через сериализацию XLSX без добавления десятичной точки — getStringValue() возвращает "123", а не "123.0".

Проверка значений во время выполнения

cell.getValue() возвращает необработанное сохранённое значение как Object. cell.getStringValue() возвращает независимое от локали строковое представление, подходящее для последующей обработки или отображения. Ветвление по CellValueType является рекомендуемым шаблоном для типобезопасного извлечения значения:

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()) {
    Worksheet sheet = workbook.getWorksheets().get(0);
    sheet.getCells().get("A1").putValue("Hello");
    sheet.getCells().get("B1").putValue(123);
    sheet.getCells().get("C1").putValue(true);
    sheet.getCells().get("D1").putValue(12.5d);
    sheet.getCells().get("G1").setFormula("=B1*2");

    Cell b1 = sheet.getCells().get("B1");
    if (b1.getType() == CellValueType.NUMBER) {
        System.out.println("Number: " + b1.getStringValue());
    }
    workbook.save("inspect.xlsx");
}

Хранилище формул

Строки формул хранятся с cell.setFormula(). Сохранённая строка формулы начинается
с = и следует стандартному синтаксису формул Excel. Метод getType() возвращает
CellValueType.FORMULA для ячеек с формулами. Aspose.Cells FOSS for Java сохраняет и
передаёт формулы в XLSX; формула пересчитывается Excel при открытии.

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()) {
    Worksheet sheet = workbook.getWorksheets().get(0);
    Cell b1 = sheet.getCells().get("B1");
    b1.putValue(100.0);
    Cell c1 = sheet.getCells().get("C1");
    c1.setFormula("=B1*1.2");
    assert c1.getType() == CellValueType.FORMULA;
    workbook.save("formulas.xlsx");
}

XLSX Точность обратного преобразования

Все типизированные значения сохраняются при сериализации XLSX и повторной загрузке. Загрузка существующего .xlsx файла использует new Workbook(path) или new Workbook(path, options) с LoadOptions для включения режима восстановления. После перезагрузки getType() и getStringValue() возвращают те же значения, что и во время записи.

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

LoadOptions options = new LoadOptions();
options.setStrictMode(false);
options.setTryRepairPackage(true);
options.setTryRepairXml(true);

try (Workbook workbook = new Workbook("input.xlsx", options)) {
    if (workbook.getLoadDiagnostics().hasRepairs()) {
        for (LoadIssue issue : workbook.getLoadDiagnostics().getIssues()) {
            System.out.println(issue.getMessage());
        }
    }
    Worksheet sheet = workbook.getWorksheets().get(0);
    System.out.println(sheet.getCells().get("A1").getStringValue());
    workbook.save("output.xlsx");
}

Поддерживаемые форматы

ФорматРасширениеЧтениеЗапись
Excel Open XML.xlsx

Открытый исходный код и лицензирование

Aspose.Cells FOSS for Java выпущен под лицензией MIT. Вы свободно можете использовать, модифицировать и распространять его в личных, открытых и коммерческих проектах без ограничений. Исходный код доступен по адресу github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Java.


Начало работы