Объединение и разделение ячеек с помощью C++

Введение

Не всегда нужно иметь одинаковое количество ячеек в каждой строке или столбце. Например, вы можете захотеть поместить заголовок в ячейку, которая охватывает несколько столбцов. Или, если создаете счет-фактуру, вам может понадобиться меньше столбцов для итоговой суммы. Чтобы объединить несколько ячеек в одну, объедините их. Microsoft Excel позволяет пользователям выбирать файлы и объединять их, чтобы структурировать электронную таблицу так, как им нужно.

Объединение ячеек в листе

Объединение ячеек в Microsoft Excel

Следующие шаги описывают, как объединить ячейки в электронной таблице с использованием MS Excel.

  1. Копируйте данные, которые вы хотите в верхнюю левую ячейку в пределах диапазона.
  2. Выберите ячейки, которые вы хотите объединить.
  3. Чтобы объединить ячейки в строке или столбце и центрировать содержимое ячейки, нажмите на значок Объединить и центрировать на панели инструментов Форматирование.

Объединение ячеек с помощью Aspose.Cells

Класс Aspose::Cells::Cells содержит полезные методы для этой задачи. Например, метод Merge() объединяет ячейки в пределах указанного диапазона в одну.

В следующем примере показано, как объединить ячейки (C6:E7) в электронной таблице.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Create a Workbook
    Workbook wbk;

    // Create a Worksheet and get the first sheet
    Worksheet worksheet = wbk.GetWorksheets().Get(0);

    // Create a Cells object to fetch all the cells
    Cells cells = worksheet.GetCells();

    // Merge some Cells (C6:E7) into a single C6 Cell
    cells.Merge(5, 2, 2, 3);

    // Input data into C6 Cell
    worksheet.GetCells().Get(5, 2).PutValue(u"This is my value");

    // Create a Style object to fetch the Style of C6 Cell
    Style style = worksheet.GetCells().Get(5, 2).GetStyle();

    // Create a Font object
    Font font = style.GetFont();

    // Set the name
    font.SetName(u"Times New Roman");

    // Set the font size
    font.SetSize(18);

    // Set the font color
    font.SetColor(Color::Blue());

    // Bold the text
    font.SetIsBold(true);

    // Make it italic
    font.SetIsItalic(true);

    // Set the background color of C6 Cell to Red
    style.SetForegroundColor(Color::Red());
    style.SetPattern(BackgroundType::Solid);

    // Apply the Style to C6 Cell
    worksheet.GetCells().Get(5, 2).SetStyle(style);

    // Save the Workbook
    wbk.Save(outDir + u"mergingcells.out.xls");

    std::cout << "Workbook saved successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Разъединение (разделение) объединенных ячеек

Использование Microsoft Excel

Следующие шаги описывают, как разделить объединенные ячейки с помощью Microsoft Excel.

  1. Выберите объединенную ячейку. Когда ячейки были объединены, на панели инструментов Форматирование выбрано Объединить и центрировать.
  2. Нажмите на Объединить и центрировать на панели инструментов Форматирование.

Использование Aspose.Cells

Класс Aspose::Cells::Cells имеет метод UnMerge(), который распаковывает ячейки в их исходное состояние. Метод распаковывает ячейки, используя ссылку на ячейку в объединенном диапазоне.

Приведенный ниже пример показывает, как разделить объединенные ячейки (C6). Пример использует файл, созданный в предыдущем примере, и разбивает объединенные ячейки.

#include <iostream>
#include "Aspose.Cells.h"

using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Path of input excel file
    U16String inputFilePath = srcDir + u"mergingcells.xls";

    // Path of output excel file
    U16String outputFilePath = outDir + u"unmergingcells.out.xls";

    // Create a Workbook and open the excel file
    Workbook wbk(inputFilePath);

    // Get the first worksheet
    Worksheet worksheet = wbk.GetWorksheets().Get(0);

    // Get the Cells object to fetch all the cells
    Cells cells = worksheet.GetCells();

    // Unmerge the cells
    cells.UnMerge(5, 2, 2, 3);

    // Save the file
    wbk.Save(outputFilePath);

    std::cout << "Cells unmerged successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Продвинутые темы