В этой статье я объясню, как удалить пустые строки и столбцы в файле Excel с помощью C#. Я также объясню, как автоматически обновлять ссылки (используемые в формулах, диаграммах и таблицах) при удалении пустых строк и столбцов.

C# API для удаления пустых строк и столбцов

Aspose.Cells for .NET — это хорошо известный API для работы с электронными таблицами, который позволяет создавать и обрабатывать файлы Excel из приложений .NET. API позволяет удалять пустые строки и столбцы в файлах Excel с помощью нескольких строк кода. Вы можете либо скачать двоичные файлы API, либо установить его с помощью NuGet.

PM> Install-Package Aspose.Cells

Удалить пустые строки в Excel с помощью С#

Ниже приведены шаги по удалению всех пустых строк в Excel с помощью C#.

  • Откройте файл Excel с помощью объекта Workbook.
  • Получите доступ к рабочему листу с пустыми строками. Доступ к рабочему листу можно получить либо по индексу (начиная с нуля), либо по имени.
  • Вызовите метод Cells.DeleteBlankRows(), чтобы удалить все пустые строки, не содержащие данных.

В следующем примере кода показано, как удалить пустые строки в Excel с помощью C#.

using Aspose.Cells;

// Откройте существующий файл Excel.
Workbook wb = new Workbook("SampleInput.xlsx");

// Получите коллекцию рабочих листов в электронной таблице.
WorksheetCollection sheets = wb.Worksheets;

// Получить первый рабочий лист из WorksheetCollection по индексу.
Worksheet sheet = sheets[0];
// Или по имени.
// Рабочий лист = листы["Лист1"];

// Удалите пустые строки из рабочего листа.
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");

Автоматическое обновление ссылок при удалении пустых строк

Удаление пустых строк может нарушить ссылки в формулах, диаграммах и таблицах. Например, ячейка B2 на втором рабочем листе имеет формулу = Sheet1! C3, которая ссылается на ячейку C3 на первом рабочем листе, как показано на следующем рисунке.

Ячейка в Sheet2 ссылается на значение в Sheet1.

Рис. 3. Ячейка в Sheet2 ссылается на значение в Sheet1.

Если мы удалим пустые строки в Sheet1, значение lima@gmail.com переместится в ячейку C1. Но формула (=Лист1!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. Формула обновлена, и ячейка содержит допустимое значение.

Удалить пустые столбцы в 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. Удаление пустых строк и столбцов

Вывод

В этой статье вы узнали, как удалить пустые строки и столбцы в файле Excel с помощью C#. Кроме того, вы научились автоматически обновлять ссылки (используемые в формулах, диаграммах и таблицах) при удалении пустых строк и столбцов. Пожалуйста, ознакомьтесь с документацией Aspose.Cells для .NET для получения дополнительной информации. Если у вас есть вопросы, задавайте их на нашем Форуме поддержки. Мы ответим на них в течение нескольких часов.

Смотрите также