Объединение и разделение ячеек — простая и часто используемая функция Microsoft Excel. Объединение ячеек может оказаться полезным в сценариях, например, когда у вас есть рабочий лист с несколькими столбцами, имеющими один и тот же заголовок. Вы можете объединить ячейки над столбцами, чтобы дать им общий заголовок. Если объединенные ячейки больше не нужны, их можно так же легко разъединить. Вам может понадобиться выполнить эти задачи в ваших приложениях C++. Для этого в этой статье вы узнаете, как программно объединять и разъединять ячейки на листах Excel с помощью C++.
- C++ API для объединения и разделения ячеек
- Объединить ячейки на листе Excel с помощью C++
- Разъединить ячейки на листе Excel с помощью С++
- Объединить диапазон ячеек на листе Excel с помощью C++
- Разъединить диапазон ячеек на листе Excel с помощью С++
- Объединение ячеек именованного диапазона на листе Excel с использованием C++
C++ API для объединения и разделения ячеек
Aspose.Cells for C++ — это собственная библиотека C++, которая позволяет создавать, читать и изменять файлы Excel, не требуя установки Microsoft Excel. API также поддерживает объединение и разделение ячеек на листе Excel. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.
PM> Install-Package Aspose.Cells.Cpp
Объединить ячейки на листе Excel с помощью C++
В этом примере мы создадим пустой лист Excel и объединим несколько ячеек, выполнив шаги, указанные ниже.
- Во-первых, создайте экземпляр класса IWorkbook.
- Получите рабочий лист с помощью метода IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Получите ячейки с помощью метода IWorksheet->GetICells().
- Объедините ячейки, используя ICells->Merge(Aspose::Cells::Systems::Int32 firstRow, Aspose::Cells::Systems::Int32 firstColumn, Aspose::Cells::Systems::Int32 totalRows, Aspose:: Метод Cells::Systems::Int32 totalColumns).
- Примените стили к объединенным ячейкам.
- Наконец, сохраните выходной файл Excel с помощью IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String имя_файла) метод.
В следующем примере кода показано, как объединить ячейки на листе Excel с помощью C++.
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Создайте объект Cells, чтобы получить все ячейки.
intrusive_ptr<ICells> cells = worksheet->GetICells();
// Объединить ячейки
cells->Merge(5, 2, 2, 3);
// Поместить данные в ячейку
cells->GetObjectByIndex(5, 2)->PutValue((StringPtr)new String("This is a test value"));
// Создайте объект стиля
intrusive_ptr<IStyle> style = cells->GetICell(5, 2)->GetIStyle();
// Создайте объект шрифта
intrusive_ptr<Aspose::Cells::IFont> font = style->GetIFont();
// Установите имя
font->SetName(new String("Times New Roman"));
// Установите размер шрифта
font->SetSize(18);
// Установить цвет шрифта
font->SetColor(Systems::Drawing::Color::GetCyan());
// Сделать текст жирным
font->SetBold(true);
// Сделать текст курсивом
font->SetItalic(true);
// Установите цвет переднего плана
style->SetForegroundColor(Systems::Drawing::Color::GetRed());
// Установите шаблон
style->SetPattern(BackgroundType_Solid);
// Применить стиль
cells->GetICell(5, 2)->SetIStyle(style);
// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("MergeCells_out.xlsx")));
Разъединить ячейки на листе Excel с помощью С++
Ниже приведены шаги для разделения ячеек на листе Excel.
- Загрузите файл Excel с помощью класса IWorkbook.
- Получите рабочий лист, содержащий объединенные ячейки, используя метод IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Получите ячейки с помощью метода IWorksheet->GetICells().
- Разъединить ячейки с помощью ICells->UnMerge(Aspose::Cells::Systems::Int32 firstRow, Aspose::Cells::Systems::Int32 firstColumn, Aspose::Cells::Systems::Int32 totalRows, Aspose::Cells ::Systems::Int32 totalColumns).
- Наконец, сохраните выходной файл Excel с помощью IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String имя_файла) метод.
В следующем примере кода показано, как разъединить ячейки на листе Excel с помощью C++.
// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedCells.xlsx")));
// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Создайте объект Cells, чтобы получить все ячейки.
intrusive_ptr<ICells> cells = worksheet->GetICells();
// Разъединить ячейки.
cells->UnMerge(5, 2, 2, 3);
// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("UnmergeCells_out.xlsx")));
Объединить диапазон ячеек на листе Excel с помощью C++
Ниже приведены шаги для объединения диапазона ячеек на листе Excel.
- Во-первых, создайте экземпляр класса IWorkbook.
- Получите нужный лист с помощью метода IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Вставьте данные в ячейку.
- Создайте диапазон, используя команду IWorksheet->GetICells()->CreateIRange(intrusiveptrAspose::Cells::Systems::String адрес) метод.
- Объедините диапазон, используя метод IRange->Merge().
- Наконец, сохраните выходной файл Excel с помощью IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String имя_файла).
В следующем примере кода показано, как объединить диапазон ячеек на листе Excel с помощью C++.
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Введите данные в ячейку A1.
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));
// Создать диапазон
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));
// Объединить диапазон в одну ячейку
range->Merge();
// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("MergeRangeOfCells_out.xlsx")));
Разъединить диапазон ячеек на листе Excel с помощью С++
Ниже приведены шаги, чтобы разъединить диапазон ячеек на листе Excel.
- Загрузите файл Excel с помощью класса IWorkbook.
- Получите рабочий лист, содержащий объединенные ячейки, используя метод IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Создайте диапазон, используя команду IWorksheet->GetICells()->CreateIRange(intrusiveptrAspose::Cells::Systems::String адрес) способ.
- Разъедините диапазон, используя метод IRange->UnMerge().
- Наконец, сохраните выходной файл Excel с помощью IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String имя_файла) метод.
В следующем примере кода показано, как разъединить диапазон ячеек на листе Excel с помощью C++.
// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));
// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Создать диапазон
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));
// Разъединить диапазон
range->UnMerge();
// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("UnmergeRangeOfCells_out.xlsx")));
Объединение ячеек именованного диапазона на листе Excel с использованием C++
Aspose.Cells for C++ также предоставляет вам возможность объединять ячейки именованного диапазона. Для этого выполните шаги, указанные ниже.
- Загрузите файл Excel с помощью класса IWorkbook.
- Получите рабочий лист с помощью метода IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Создайте диапазон, используя команду IWorksheet->GetICells()->CreateIRange(intrusiveptrAspose::Cells::Systems::String адрес) способ.
- Задайте имя диапазона с помощью команды IRange->SetName(intrusiveptrAspose::Cells::Systems::String значение) метод.
- Создайте и примените стили к именованному диапазону.
- Объедините ячейки именованного диапазона, используя метод IRange->Merge().
- Наконец, сохраните выходной файл Excel с помощью IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String имя_файла).
В следующем примере кода показано, как объединить ячейки именованного диапазона с помощью C++.
// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));
// Доступ к первому рабочему листу в файле Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Создать диапазон
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));
// Установить имя диапазона
range->SetName(new String("Named_Range"));
// Определить объект стиля
intrusive_ptr<IStyle> style = workbook->CreateIStyle();
// Установить горизонтальное выравнивание
style->SetHorizontalAlignment(TextAlignmentType::TextAlignmentType_Center);
// Создайте объект StyleFlag
intrusive_ptr<IStyleFlag> styleFlag = Factory::CreateIStyleFlag();
// Установить горизонтальное выравнивание to true
styleFlag->SetHorizontalAlignment(true);
// Применение стиля к диапазону
range->ApplyIStyle(style, styleFlag);
// Поместите данные в диапазон
range->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));
// Объединить диапазон
range->Merge();
// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("MergeNamedRange_out.xlsx")));
Получить бесплатную лицензию
Вы можете попробовать API без ограничений на пробную версию, запросив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как объединять и разъединять ячейки на листе Excel с помощью C++. Кроме того, вы увидели, как объединять и разъединять диапазоны и именованные диапазоны с помощью Aspose.Cells for C++ API. API предоставляет множество дополнительных функций для работы с файлами Excel, которые вы можете подробно изучить, посетив официальную документацию. Если у вас возникнут вопросы, свяжитесь с нами на нашем бесплатном форуме поддержки.