java - apache POI 中单元格的直接寻址

标签 java excel apache-poi

我想使用 apache POI 修改现有的 xlsm 文件。

由于我只需要更改单个单元格,我不想循环整个工作表,但到目前为止我发现的所有示例都建议循环遍历所有行和一行中的所有单元格,检查是否当前行/列索引与要更改的行/列索引匹配。

是否没有“随机访问”模式可以直接通过坐标获取单个单元格?事件有希望getCell method of the CellUtil class需要一个行对象而不仅仅是一个整数坐标。

最佳答案

Excel 文件格式是一种(通常)稀疏文件格式,因此通常会从文件中跳过未使用的 + 无样式的行和单元格。因此,在获取行和单元格时,您确实需要检查空值。但是,除此之外,您几乎可以直接获取单元格。您可以使用 CellReference class将 Excel 样式的坐标集(例如 B3)转换为 POI 样式的坐标(例如 row=2,column=1),然后获取

CellReference ref = new CellReference("B3");

Workbook workbook = WorkbookFactory.create(new File("input.xls"));
Sheet sheet = workbook.getSheetAt(0);

Row r = sheet.getRow(ref.getRow());
if (r == null) {
   // Handle this whole row being empty
} else {
   Cell c = r.getCell(ref.getCol(), Row.RETURN_BLANK_AS_NULL);
   if (c == null) {
      // Handle this cell being empty
   } else {
      // Do something with the cell
   }
}

根据您想要如何处理缺失的行或单元格,您可以将其缩短,但这将根据您的需求而定

关于java - apache POI 中单元格的直接寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36284673/

相关文章:

java - 重写 JComponent 方法

java - 选择一个 excel java api

java - java中将ODT转换为doc/rtf格式

java - 如何使用 Apache POI 将现有 Excel 工作表中的一行复制到新的 Excel 工作表?

excel - 使用 Excel 计算统计显着性

excel - 如何按百分比分配总数,其中每个单元格都是整数,并且它们的总和恰好等于原始总数?

java - nextLine() 在 while 循环结束时跳过行。丢失数据

java - 如何更改 XWPFDocument 中的文本方向?

Java、克里奥 : Add fields to class persisted as FieldSerializer

regex - VBA + 正则表达式 + 范围.替换