この記事では、C#を使用してExcelファイルの空白の行と列を削除する方法について説明します。また、空白の行と列を削除しながら、参照を自動的に更新する方法(数式、グラフ、表で使用)についても説明します。

空白の行と列を削除するC#API

Aspose.Cells for .NETは、.NETアプリケーション内からExcelファイルを作成および処理できる有名なスプレッドシート操作APIです。 APIを使用すると、数行のコードでExcelファイルの空白の行と列を削除できます。 APIのバイナリをダウンロードするか、NuGetを使用してインストールすることができます。

PM> Install-Package Aspose.Cells

C#を使用してExcelで空白行を削除する

以下は、C#を使用してExcelのすべての空白行を削除する手順です。

  • Workbookオブジェクトを使用してExcelファイルを開きます。
  • 空白行のあるワークシートにアクセスします。ワークシートには、インデックス(ゼロベース)または名前のいずれかでアクセスできます。
  • Cells.DeleteBlankRows()メソッドを呼び出して、データを含まないすべての空白行を削除します。

次のサンプルコードは、C#を使用してExcelで空白行を削除する方法を示しています。

using Aspose.Cells;

// 既存のExcelファイルを開きます。
Workbook wb = new Workbook("SampleInput.xlsx");

// スプレッドシートでワークシートコレクションを取得します。
WorksheetCollection sheets = wb.Worksheets;

// インデックスによってWorksheetCollectionから最初のワークシートを取得します。
Worksheet sheet = sheets[0];
// または名前で。
// ワークシートシート=sheets["Sheet1"];

// ワークシートから空白行を削除します。
sheet.Cells.DeleteBlankRows();

// Excelファイルを保存します。
wb.Save("SampleOutput.xlsx");
空白行を削除する

図1:空白行を削除する

Cells.DeleteBlankRowsメソッドは、何らかのフォーマットが適用されている場合でも、空白行を削除することに注意してください。また、データの下にあるフォーマット済みの空白行も削除されます。

フォーマットされた空白行を削除する

図2:フォーマットされた空白行の削除

Excelドキュメントのすべてのワークシートから空白行を削除する場合は、次のコードに示すように、WorksheetCollectionを繰り返し処理し、各ワークシートでDeleteBlankRowsメソッドを呼び出します。

// 既存のExcelファイルを開きます。
Workbook workbook = new Workbook("SampleInput.xlsx");

// ワークシートを繰り返し処理します。
foreach (Worksheet sheet in workbook.Worksheets)
{
    // ワークシートから空白行を削除します。
    sheet.Cells.DeleteBlankRows();
}

// Excelファイルを保存します。
workbook.Save("SampleOutput.xlsx");

空白行を削除しながら参照を自動的に更新する

空白行を削除すると、数式、グラフ、表の参照が壊れることがあります。たとえば、2番目のワークシートのセルB2には、次の図に示すように、最初のワークシートのセルC3を参照する数式= Sheet1!C3があります。

Sheet2のセルは、Sheet1の値を参照しています。

図3:Sheet2のセルは、Sheet1の値を参照しています。

Sheet1の空白行を削除すると、値lima@gmail.comがセルC1に移動します。ただし、数式(= Sheet1!C3)は更新されず、セルB2には以下に示すように無効な値が含まれます。

空白行を削除した後、セルB2の数式は更新されていません。

図4:空白行を削除した後、セルB2の数式は更新されていません。

DeleteOptions.UpdateReferenceプロパティを使用してこの問題を回避し、trueに設定することができます。空白行を削除しながら、参照が更新されるようにします。次のサンプルコードは、DeleteOptions.UpdateReferenceプロパティの使用方法を示しています。

// 既存のExcelファイルを開きます。
Workbook wb = new Workbook("SampleInput.xlsx");

// スプレッドシートでワークシートコレクションを取得します。
WorksheetCollection sheets = wb.Worksheets;

// インデックスによってWorksheetCollectionから最初のワークシートを取得します。
Worksheet sheet = sheets[0];

// このオプションは、参照(数式、チャート)を保証します
// 空白行を削除しながら更新されます。
DeleteOptions options = new DeleteOptions();
options.UpdateReference = true;

// ワークシートから空白行を削除します。
sheet.Cells.DeleteBlankRows(options);

// Excelファイルを保存します。
wb.Save("SampleOutput.xlsx");

次の画像に示すように、数式が更新され、セルB2に有効な値が含まれています。

数式が更新され、セルに有効な値が含まれています。

図5:数式が更新され、セルに有効な値が含まれています。

C#を使用してExcelで空白の列を削除する

空白の列を削除する手順は、空白の行を削除する手順と同じです。 Cells.DeleteBlankColumnsメソッドを使用して、データを含まないすべての空白の列を削除します。次のサンプルコードは、C#で空白の行と列を削除する方法を示しています。

// 既存のExcelファイルを開きます。
Workbook wb = new Workbook("SampleInput.xlsx");

// スプレッドシートでワークシートコレクションを取得します。
WorksheetCollection sheets = wb.Worksheets;

// インデックスによってWorksheetCollectionから最初のワークシートを取得します。
Worksheet sheet = sheets[0];

// このオプションは、参照(数式、チャート)を保証します
// 空白の行と列を削除しながら更新されます。
DeleteOptions options = new DeleteOptions();
options.UpdateReference = true;

// 空白の行と列を削除します。
sheet.Cells.DeleteBlankRows(options);
sheet.Cells.DeleteBlankColumns(options);

// ワークブックの数式を計算する
wb.CalculateFormula();

// Excelファイルを保存します。
wb.Save("SampleOutput.xlsx");
空白の行と列を削除する

図6:空白の行と列を削除する

結論

この記事では、C#を使用してExcelファイルの空白の行と列を削除する方法を学習しました。さらに、空白の行と列を削除しながら、参照(数式、グラフ、表で使用される)を自動的に更新する方法を学習しました。詳細については、Aspose.Cellsfor.NETのドキュメントを確認してください。ご不明な点がございましたら、サポートフォーラムまでお気軽に投稿してください。数時間以内にお答えします。

関連項目