介绍

Cell 类是 Aspose.Cells FOSS for Java 的基础单元。它存储已键入的值,通过 CellValueType 枚举公开其运行时类型,持久化供 Excel 计算的公式字符串,并通过 getStringValue() 提供统一的字符串表示。本篇文章详细审视核心单元格 API,并附有验证示例。

下面的所有代码示例均使用 Maven 依赖:

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

核心单元 API

使用 putValue() 存储类型化值

Cell.putValue() 接受六种 Java 类型:StringintdoublebooleanLocalDateTimeObject。每次调用都会设置单元格的内部值,并决定由 cell.getType() 返回的 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;
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() 返回原始存储的值,类型为 Objectcell.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


快速入门