Фильтрация информации в электронных таблицах Excel является важной функцией. Он позволяет скрыть ненужные данные и показать только те данные, которые соответствуют определенным критериям. Могут быть сценарии, в которых фильтрация данных может оказаться полезной. Например, организация может захотеть отфильтровать низкоэффективные продукты из отчета о продажах, чтобы проанализировать и улучшить свои стратегии продаж. В этой статье вы узнаете, как добавить или удалить автофильтр в файлах Excel с помощью C++.

C++ API для добавления и удаления автофильтра в файлах Excel

Мы будем использовать API Aspose.Cells for C++ для добавления и удаления автофильтра в файлах Excel. Это собственная библиотека C++, которая позволяет создавать, читать и изменять файлы Excel, не требуя установки Microsoft Excel. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.

PM> Install-Package Aspose.Cells.Cpp

Применить автофильтр в файлах Excel с помощью C++

Вы можете применить автофильтр к диапазону ячеек. Автофильтры позволяют сортировать и фильтровать значения в заданном диапазоне ячеек. Ниже приведены шаги по добавлению автофильтра в файлы Excel.

В следующем примере кода показано, как применить автофильтр к диапазону ячеек в файле Excel с помощью C++.

// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");

// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");

// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Book3.xlsx")));

// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Создание автофильтра путем указания диапазона ячеек
worksheet->GetIAutoFilter()->SetRange(new String("A1:B1"));

// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("AutoFilter_out.xlsx")));
Образ выходного файла, сгенерированный кодом примера

Образ выходного файла, сгенерированный кодом примера

Добавить автофильтр даты в файлы Excel с помощью С++

Файлы Excel могут содержать данные, основанные на датах. Вы можете столкнуться с ситуациями, когда вам нужно фильтровать и анализировать данные на основе разных дат. Таким образом, фильтр даты окажется полезным в таких сценариях. Ниже приведены шаги для добавления автофильтра даты в файлы Excel.

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

// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");

// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");

// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Book4.xlsx")));

// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Вызовите функцию AddDateFilter, чтобы применить фильтр
worksheet->GetIAutoFilter()->AddDateFilter(0, DateTimeGroupingType_Month, 2018, 1, 1, 0, 0, 0);

// Вызовите функцию «Обновить», чтобы обновить рабочий лист.
worksheet->GetIAutoFilter()->Refresh();

// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("DateFilter_out.xlsx")));

Добавить автофильтр динамической даты в файл Excel с помощью С++

Могут быть случаи, когда вам нужен более общий фильтр даты, например, месяц независимо от года или месяц перед текущим месяцем. Для подобных сценариев вы можете использовать динамический автофильтр для фильтрации данных. Ниже приведены шаги для фильтрации данных с использованием динамического автофильтра даты.

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

// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");

// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");

// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Book4.xlsx")));

// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Вызовите функцию DynamicFilter, чтобы применить фильтр
worksheet->GetIAutoFilter()->DynamicFilter(0, DynamicFilterType_Februray);

// Вызовите функцию «Обновить», чтобы обновить рабочий лист.
worksheet->GetIAutoFilter()->Refresh();

// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("DynamicDateAutoFilter_out.xlsx")));

Применение пользовательского автофильтра в файлах Excel с помощью C++

Если вы хотите применить пользовательский автофильтр, вам поможет Aspose.Cells for C++ API. Используя API, вы можете применить пользовательский автофильтр к файлам Excel в соответствии с вашими конкретными требованиями. Ниже приведены шаги по добавлению пользовательского автофильтра в файлы Excel.

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

// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");

// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");

// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("sampleCountryNames.xlsx")));

// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Вызов пользовательской функции для применения фильтра
worksheet->GetIAutoFilter()->Custom(0, FilterOperatorType_Equal, new String("Brazil"));

// Вызовите функцию «Обновить», чтобы обновить рабочий лист.
worksheet->GetIAutoFilter()->Refresh();

// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("CustomFilter_out.xlsx")));

Удалить автофильтр из файлов Excel

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

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

// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");

// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");

// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleAutoFilter.xlsx")));

// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Удалить автофильтры
worksheet->RemoveAutoFilter();

// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("RemoveAutoFilter_out.xlsx")));

Получить бесплатную лицензию

Вы можете попробовать API без ограничений по ознакомительной версии, запросив бесплатную временную лицензию.

Вывод

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

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