В этой статье я объясню, как удалить пустые строки и столбцы в файле Excel с помощью C#. Я также объясню, как автоматически обновлять ссылки (используемые в формулах, диаграммах и таблицах) при удалении пустых строк и столбцов.
- Удалить пустые строки в Excel с помощью С#
- Автоматическое обновление ссылок при удалении пустых строк
- Удалить пустые столбцы в Excel с помощью С#
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 на первом рабочем листе, как показано на следующем рисунке.

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