使用 Java 删除 Excel 中的空白行和列

我们可以通过编程轻松地从 Excel 工作表中删除空白行和列。在本文中,我们将学习如何使用 Java 删除 Excel 中的空白行和列。

本文将涵盖以下主题:

用于删除 Excel 中的空白行和列的 Java API

为了从 XLSX 文件中删除空白行和列,我们将使用 Aspose.Cells for Java API。请下载 API 的 JAR 或在基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cells</artifactId>
    <version>21.11</version>
</dependency>

使用 Java 删除 Excel 中的空白行

我们可以按照以下步骤以编程方式从 Excel 工作表中删除空白行:

  • 首先,使用 Workbook 类加载一个 Excel 文件。
  • 接下来,调用 Workbook.getWorksheets() 方法并在 WorksheetCollection 对象中获取工作表。
  • 然后,按索引(从零开始)或按名称访问具有空白行的工作表。
  • 之后,调用 Cells.deleteBlankRows() 方法从访问的工作表中删除空白行。
  • 最后,调用带有输出文件路径的save()方法保存输出文件。

以下示例代码显示了如何使用 Java 从 Excel 中删除空白行。

// 加载现有的 Excel 文件。
Workbook workbook = new Workbook("C:\\Files\\Cells\\sample_rows_cols.xlsx");

// 获取电子表格中的工作表集合。
WorksheetCollection sheets = workbook.getWorksheets();

// 通过索引从 WorksheetCollection 中获取第一个 Worksheet。
Worksheet sheet = sheets.get(0);
// 或按名称。
// 工作表 sheet = sheet.get("Sheet1");

// 从工作表中删除空白行。
sheet.getCells().deleteBlankRows();

// 保存更新的 Excel 文件。
workbook.save("C:\\Files\\Cells\\output.xlsx");
使用 Java 删除 Excel 中的空白行。

使用 Java 删除 Excel 中的空白行。

同样,我们可以从 Excel 文档中的所有工作表中删除空白行。我们将简单地遍历 WorksheetCollection 并在每个工作表上调用 deleteBlankRows() 方法,如以下代码示例所示:

// 打开现有的 Excel 文件。
Workbook workbook = new Workbook("C:\\Files\\Cells\\sample_rows_cols.xlsx");

// 获取工作表集合
WorksheetCollection worksheets = workbook.getWorksheets();

// 遍历工作表。
for (int i=0; i<worksheets.getCount(); i++)
{
    // 一张一张地访问工作表
    Worksheet sheet = worksheets.get(i);
  
    // 从工作表中删除空白行。
    sheet.getCells().deleteBlankRows();
}

// 保存更新的 Excel 文件。
workbook.save("C:\\Files\\Cells\\output.xlsx");

使用 Java 删除 Excel 中的空白列

我们可以按照以下步骤以编程方式从 Excel 工作表中删除空白列:

  • 首先,使用 Workbook 类加载一个 Excel 文件。
  • 接下来,调用 Workbook.getWorksheets() 方法并在 WorksheetCollection 对象中获取工作表。
  • 然后,通过索引(从零开始)或名称访问具有空白列的工作表。
  • 之后,调用 Cells.deleteBlankColumns() 方法从访问的工作表中删除空白列。
  • 最后,调用带有输出文件路径的save()方法保存输出文件。

以下示例代码显示了如何使用 Java 从 Excel 中删除空白列。

// 打开现有的 Excel 文件。
Workbook workbook = new Workbook("C:\\Files\\Cells\\sample_rows_cols.xlsx");

// 获取电子表格中的工作表集合。
WorksheetCollection sheets = workbook.getWorksheets();

// 通过索引从 WorksheetCollection 中获取第一个 Worksheet。
Worksheet sheet = sheets.get(2);

// 删除空白列。
sheet.getCells().deleteBlankColumns(options);

// 保存更新的 Excel 文件。
workbook.save("C:\\Files\\Cells\\output_DeleteBlankColumns.xlsx");	
使用 Java 删除 Excel 中的空白列。

使用 Java 删除 Excel 中的空白列。

删除空白行和列时自动更新参考

删除空白行或列可能会破坏公式、图表和表格中的引用。例如,Sheet2 中的单元格 A1 有一个公式 =Sheet1!C7,它引用了第一个工作表的单元格 C7,如下图所示。

Sheet2 中的单元格 A1 引用 Sheet1 中单元格 C7 的值。

Sheet2 中的单元格 A1 引用 Sheet1 中单元格 C7 的值。

如果我们删除 Sheet1 中的空白行,则 C7 (650000) 的值将移动到单元格 C6。但公式 (=Sheet1!C7) 不会更新,单元格 A1 将显示 C7 的值,在这种情况下为 550000。我们可以通过将 DeleteOptions.setUpdateReference 设置为 true 来避免这个问题。它将确保在删除空白行时更新引用。

我们可以按照以下步骤以编程方式从 Excel 工作表中删除空白行时自动更新引用:

  • 首先,使用 Workbook 类加载一个 Excel 文件。
  • 接下来,调用 Workbook.getWorksheets() 方法并在 WorksheetCollection 对象中获取工作表。
  • 然后,按索引(从零开始)或按具有空白行的名称访问工作表。
  • 接下来,创建 DeleteOptions 类的实例
  • 然后,调用 setUpdateReferences() 为真。它将在删除空白行的同时更新其他工作表中的引用。
  • 之后,使用 DeleteOptions 对象作为参数调用 Cells.deleteBlankRows() 方法,以从访问的工作表中删除空白行。
  • 最后,调用带有输出文件路径的save()方法保存输出文件。

以下示例代码显示了如何在删除 Excel 中的空白行时更新引用。

// 打开现有的 Excel 文件。
Workbook workbook = new Workbook("C:\\Files\\Cells\\sample_rows_cols.xlsx");

// 获取电子表格中的工作表集合。
WorksheetCollection sheets = workbook.getWorksheets();

// 通过索引从 WorksheetCollection 中获取第一个 Worksheet。
Worksheet sheet = sheets.get(0);

// 此选项将确保引用(在公式、图表中)
// 在删除空白行时更新。
DeleteOptions options = new DeleteOptions();
options.setUpdateReference(true);

// 从工作表中删除空白行。
sheet.getCells().deleteBlankRows(options);

// 保存更新的 Excel 文件。
workbook.save("C:\\Files\\Cells\\output_UpdateReferencesAutomatically.xlsx");

同样,我们可以在删除 Excel 中的空白列的同时更新引用。但是,我们只需要使用 DeleteOptions 作为参数调用 deleteBlankColumns() 方法。

获得免费许可证

请通过申请 免费的临时许可证 来尝试不受评估限制的 API。

结论

在本文中,我们学习了如何使用 Java 在 Excel 中删除行和列。我们还看到了如何在以编程方式删除行和列的同时更新引用。此外,您可以使用 文档 了解更多关于 Aspose.Cells for Java API 的信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看