Об’єднання та роз’єднання комірок є простою та широко використовуваною функцією Microsoft Excel. Об’єднання комірок може виявитися корисним у сценаріях, наприклад, коли у вас є робочий аркуш із кількома стовпцями з однаковими заголовками. Ви можете об’єднати клітинки над стовпцями, щоб надати їм спільний заголовок. Якщо об’єднані комірки більше не потрібні, ви можете скасувати їх так само легко. Вам може знадобитися виконати ці завдання у ваших програмах C++. Для цього ця стаття навчить вас, як програмно об’єднувати та роз’єднувати комірки на робочих аркушах 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 і об’єднаємо кілька клітинок, дотримуючись наведених нижче кроків.

У наведеному нижче прикладі коду показано, як об’єднати клітинки на аркуші 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"));

// Створіть об’єкт Style 
intrusive_ptr<IStyle> style = cells->GetICell(5, 2)->GetIStyle();

// Створіть об’єкт Font
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 за допомогою 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("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, створеного зразком коду

Зображення вихідного файлу Excel, згенерованого зразком коду

Об’єднайте діапазон клітинок на аркуші Excel за допомогою C++

Нижче наведено кроки для об’єднання діапазону клітинок на аркуші Excel.

У наведеному нижче прикладі коду показано, як об’єднати діапазон клітинок на аркуші 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 за допомогою 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("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, створеного зразком коду

Зображення вихідного файлу Excel, згенерованого зразком коду

Об’єднайте клітинки іменованого діапазону на робочому аркуші Excel за допомогою C++

Aspose.Cells for C++ також надає вам можливість об’єднувати клітинки іменованого діапазону. Щоб досягти цього, виконайте наведені нижче дії.

Наведений нижче приклад коду демонструє, як об’єднати клітинки іменованого діапазону за допомогою 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")));
Зображення вихідного файлу Excel, створеного зразком коду

Зображення вихідного файлу Excel, згенерованого зразком коду

Отримайте безкоштовну ліцензію

Ви можете спробувати API без оціночних обмежень, надіславши запит на безкоштовну тимчасову ліцензію.

Висновок

У цій статті ви дізналися, як об’єднувати та роз’єднувати клітинки на аркуші Excel за допомогою C++. Крім того, ви бачили, як об’єднувати та роз’єднувати діапазони та іменовані діапазони за допомогою API Aspose.Cells for C++. API надає багато додаткових функцій для роботи з файлами Excel, які ви можете детально вивчити, відвідавши офіційну документацію. У разі будь-яких запитань зв’яжіться з нами на нашому безкоштовному форумі підтримки.

Дивись також