Mesclar e desfazer a mesclagem de células é um recurso simples e comumente usado do Microsoft Excel. Mesclar células pode ser útil em cenários, por exemplo, quando você tem uma planilha com várias colunas que compartilham o mesmo título. Você pode mesclar as células acima das colunas para dar a elas um título comum. Caso as células mescladas não sejam mais necessárias, você pode desfazer a mesclagem com a mesma facilidade. Talvez você precise executar essas tarefas em seus aplicativos C++. Para isso, este artigo ensinará como mesclar e desfazer a mesclagem de células em planilhas do Excel programaticamente usando C++.

API C++ para mesclar e desfazer a mesclagem de células

Aspose.Cells for C++ é uma biblioteca nativa de C++ que permite criar, ler e modificar arquivos Excel sem exigir a instalação do Microsoft Excel. A API também oferece suporte para mesclar e desfazer a mesclagem de células em uma planilha do Excel. Você pode instalar a API por meio do NuGet ou baixá-la diretamente da seção Downloads.

PM> Install-Package Aspose.Cells.Cpp

Mesclar células em uma planilha do Excel usando C++

Neste exemplo, criaremos uma planilha vazia do Excel e mesclaremos algumas células seguindo as etapas abaixo.

O código de exemplo a seguir mostra como mesclar células em uma planilha do Excel usando C++.

// Caminho do diretório de saída.
StringPtr outDir = new String("OutputDirectory\\");

// Carregar o arquivo Excel de entrada
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Acesse a primeira planilha no arquivo Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Crie um objeto Cells para buscar todas as células.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Mesclar células
cells->Merge(5, 2, 2, 3);

// Colocar dados na célula
cells->GetObjectByIndex(5, 2)->PutValue((StringPtr)new String("This is a test value"));

// Criar um objeto de estilo 
intrusive_ptr<IStyle> style = cells->GetICell(5, 2)->GetIStyle();

// Criar um objeto Font
intrusive_ptr<Aspose::Cells::IFont> font = style->GetIFont();

// Defina o nome
font->SetName(new String("Times New Roman"));

// Defina o tamanho da fonte
font->SetSize(18);

// Defina a cor da fonte
font->SetColor(Systems::Drawing::Color::GetCyan());

// Deixe o texto em negrito
font->SetBold(true);

// Deixe o texto em itálico
font->SetItalic(true);

// Definir a cor do primeiro plano
style->SetForegroundColor(Systems::Drawing::Color::GetRed());

// Definir o padrão
style->SetPattern(BackgroundType_Solid);

// Aplicar o estilo
cells->GetICell(5, 2)->SetIStyle(style);

// Salve o arquivo Excel
workbook->Save(outDir->StringAppend(new String("MergeCells_out.xlsx")));
Imagem do arquivo Excel de saída gerado pelo código de exemplo

Imagem do arquivo Excel de saída gerado pelo código de exemplo

Unmerge células em uma planilha do Excel usando C++

A seguir estão as etapas para desfazer a mesclagem de células em uma planilha do Excel.

O código de exemplo a seguir demonstra como desfazer a mesclagem de células em uma planilha do Excel usando C++.

// Caminho do diretório de origem.
StringPtr srcDir = new String("SourceDirectory\\");

// Caminho do diretório de saída.
StringPtr outDir = new String("OutputDirectory\\");

// Carregar o arquivo Excel de entrada
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedCells.xlsx")));

// Acesse a primeira planilha no arquivo Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Crie um objeto Cells para buscar todas as células.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Desfazer a mesclagem das células.
cells->UnMerge(5, 2, 2, 3);

// Salve o arquivo Excel
workbook->Save(outDir->StringAppend(new String("UnmergeCells_out.xlsx")));
Imagem do arquivo Excel de saída gerado pelo código de exemplo

Imagem do arquivo Excel de saída gerado pelo código de exemplo

Mesclar um intervalo de células em uma planilha do Excel usando C++

A seguir estão as etapas para mesclar um intervalo de células em uma planilha do Excel.

O código de exemplo a seguir mostra como mesclar um intervalo de células em uma planilha do Excel usando C++.

// Caminho do diretório de saída.
StringPtr outDir = new String("OutputDirectory\\");

// Carregar o arquivo Excel de entrada
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Acesse a primeira planilha no arquivo Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Dados de entrada na célula A1.
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Criar um intervalo
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Mesclar intervalo em uma única célula
range->Merge();

// Salve o arquivo Excel
workbook->Save(outDir->StringAppend(new String("MergeRangeOfCells_out.xlsx")));
Imagem do arquivo Excel de saída gerado pelo código de exemplo

Imagem do arquivo Excel de saída gerado pelo código de exemplo

Unmerge um intervalo de células em uma planilha do Excel usando C++

A seguir estão as etapas para desfazer a mesclagem de um intervalo de células em uma planilha do Excel.

O código de exemplo a seguir mostra como desfazer a mesclagem de um intervalo de células em uma planilha do Excel usando C++.

// Caminho do diretório de origem.
StringPtr srcDir = new String("SourceDirectory\\");

// Caminho do diretório de saída.
StringPtr outDir = new String("OutputDirectory\\");

// Carregar o arquivo Excel de entrada
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Acesse a primeira planilha no arquivo Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Criar um intervalo
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Desfazer mesclagem
range->UnMerge();

// Salve o arquivo Excel
workbook->Save(outDir->StringAppend(new String("UnmergeRangeOfCells_out.xlsx")));
Imagem do arquivo Excel de saída gerado pelo código de exemplo

Imagem do arquivo Excel de saída gerado pelo código de exemplo

Mesclar células de um intervalo nomeado em uma planilha do Excel usando C++

Aspose.Cells para C++ também oferece a capacidade de mesclar as células de um intervalo nomeado. Para conseguir isso, siga os passos abaixo.

O código de exemplo a seguir demonstra como mesclar as células de um intervalo nomeado usando C++.

// Caminho do diretório de origem.
StringPtr srcDir = new String("SourceDirectory\\");

// Caminho do diretório de saída.
StringPtr outDir = new String("OutputDirectory\\");

// Carregar o arquivo Excel de entrada
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleMergedRangeOfCells.xlsx")));

// Acesse a primeira planilha no arquivo Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Criar um intervalo
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Definir nome do intervalo
range->SetName(new String("Named_Range"));

// Definir objeto de estilo
intrusive_ptr<IStyle> style = workbook->CreateIStyle();

// Definir alinhamento horizontal
style->SetHorizontalAlignment(TextAlignmentType::TextAlignmentType_Center);

// Criar um objeto StyleFlag
intrusive_ptr<IStyleFlag> styleFlag = Factory::CreateIStyleFlag();

// Definir alinhamento horizontal to true
styleFlag->SetHorizontalAlignment(true);

// Aplicar o estilo ao intervalo
range->ApplyIStyle(style, styleFlag);

// Colocar dados no intervalo
range->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Mesclar intervalo
range->Merge();

// Salve o arquivo Excel
workbook->Save(outDir->StringAppend(new String("MergeNamedRange_out.xlsx")));
Imagem do arquivo Excel de saída gerado pelo código de exemplo

Imagem do arquivo Excel de saída gerado pelo código de exemplo

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como mesclar e desfazer a mesclagem de células em uma planilha do Excel usando C++. Além disso, você viu como mesclar e desfazer a mesclagem de intervalos e intervalos nomeados usando Aspose.Cells para C++ API. A API fornece muitos recursos adicionais para trabalhar com arquivos do Excel que você pode explorar em detalhes visitando a documentação oficial. Em caso de dúvidas, sinta-se à vontade para entrar em contato conosco em nosso fórum de suporte gratuito.

Veja também