Fusionar y anular la fusión de celdas es una característica simple y de uso común de Microsoft Excel. La combinación de celdas puede resultar útil en situaciones, por ejemplo, cuando tiene una hoja de cálculo con varias columnas que comparten el mismo encabezado. Puede fusionar las celdas sobre las columnas para darles un encabezado común. En caso de que las celdas combinadas ya no sean necesarias, puede deshacerlas con la misma facilidad. Es posible que deba realizar estas tareas dentro de sus aplicaciones C++. Para eso, este artículo le enseñará cómo combinar y separar celdas en hojas de cálculo de Excel mediante programación usando C++.

API de C++ para fusionar y desfusionar celdas

Aspose.Cells for C++ es una biblioteca nativa de C++ que le permite crear, leer y modificar archivos de Excel sin necesidad de instalar Microsoft Excel. La API también admite la combinación y separación de celdas en una hoja de cálculo de Excel. Puede instalar la API a través de NuGet o descargarla directamente desde la sección Descargas.

PM> Install-Package Aspose.Cells.Cpp

Combinar celdas en una hoja de cálculo de Excel usando C++

En este ejemplo, crearemos una hoja de cálculo de Excel vacía y fusionaremos algunas celdas siguiendo los pasos que se indican a continuación.

El siguiente código de ejemplo muestra cómo combinar celdas en una hoja de cálculo de Excel usando C++.

// Ruta del directorio de salida.
StringPtr outDir = new String("OutputDirectory\\");

// Cargue el archivo de Excel de entrada
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Acceda a la primera hoja de trabajo en el archivo de Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Cree un objeto Celdas para recuperar todas las celdas.
intrusive_ptr<ICells> cells = worksheet->GetICells();

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

// Poner datos en la celda.
cells->GetObjectByIndex(5, 2)->PutValue((StringPtr)new String("This is a test value"));

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

// Crear un objeto de fuente
intrusive_ptr<Aspose::Cells::IFont> font = style->GetIFont();

// Establecer el nombre
font->SetName(new String("Times New Roman"));

// Establecer el tamaño de fuente
font->SetSize(18);

// Establecer el color de la fuente
font->SetColor(Systems::Drawing::Color::GetCyan());

// Poner el texto en negrita
font->SetBold(true);

// Poner el texto en cursiva
font->SetItalic(true);

// Establecer el color de primer plano
style->SetForegroundColor(Systems::Drawing::Color::GetRed());

// Establecer el patrón
style->SetPattern(BackgroundType_Solid);

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

// Guarde el archivo de Excel
workbook->Save(outDir->StringAppend(new String("MergeCells_out.xlsx")));
Imagen del archivo de salida de Excel generado por el código de muestra

Imagen del archivo de salida de Excel generado por el código de muestra

Descombinar celdas en una hoja de cálculo de Excel usando C++

Los siguientes son los pasos para separar celdas en una hoja de cálculo de Excel.

El siguiente código de ejemplo demuestra cómo separar celdas en una hoja de cálculo de Excel usando C++.

// Ruta del directorio de origen.
StringPtr srcDir = new String("SourceDirectory\\");

// Ruta del directorio de salida.
StringPtr outDir = new String("OutputDirectory\\");

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

// Acceda a la primera hoja de trabajo en el archivo de Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Cree un objeto Celdas para recuperar todas las celdas.
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Separar celdas.
cells->UnMerge(5, 2, 2, 3);

// Guarde el archivo de Excel
workbook->Save(outDir->StringAppend(new String("UnmergeCells_out.xlsx")));
Imagen del archivo de salida de Excel generado por el código de muestra

Imagen del archivo de salida de Excel generado por el código de muestra

Combinar un rango de celdas en una hoja de cálculo de Excel usando C++

Los siguientes son los pasos para combinar un rango de celdas en una hoja de cálculo de Excel.

El siguiente código de ejemplo muestra cómo combinar un rango de celdas en una hoja de cálculo de Excel usando C++.

// Ruta del directorio de salida.
StringPtr outDir = new String("OutputDirectory\\");

// Cargue el archivo de Excel de entrada
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Acceda a la primera hoja de trabajo en el archivo de Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Ingrese los datos en la celda A1.
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// crear un rango
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Combinar rango en una sola celda
range->Merge();

// Guarde el archivo de Excel
workbook->Save(outDir->StringAppend(new String("MergeRangeOfCells_out.xlsx")));
Imagen del archivo de salida de Excel generado por el código de muestra

Imagen del archivo de salida de Excel generado por el código de muestra

Separar un rango de celdas en una hoja de cálculo de Excel usando C++

Los siguientes son los pasos para separar un rango de celdas en una hoja de cálculo de Excel.

El siguiente código de ejemplo muestra cómo separar un rango de celdas en una hoja de cálculo de Excel usando C++.

// Ruta del directorio de origen.
StringPtr srcDir = new String("SourceDirectory\\");

// Ruta del directorio de salida.
StringPtr outDir = new String("OutputDirectory\\");

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

// Acceda a la primera hoja de trabajo en el archivo de Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// crear un rango
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Descombinar rango
range->UnMerge();

// Guarde el archivo de Excel
workbook->Save(outDir->StringAppend(new String("UnmergeRangeOfCells_out.xlsx")));
Imagen del archivo de salida de Excel generado por el código de muestra

Imagen del archivo de salida de Excel generado por el código de muestra

Combinar celdas de un rango con nombre en una hoja de cálculo de Excel usando C++

Aspose.Cells for C++ también le brinda la posibilidad de fusionar las celdas de un rango con nombre. Para lograr esto, siga los pasos que se indican a continuación.

El siguiente código de ejemplo muestra cómo combinar las celdas de un rango con nombre mediante C++.

// Ruta del directorio de origen.
StringPtr srcDir = new String("SourceDirectory\\");

// Ruta del directorio de salida.
StringPtr outDir = new String("OutputDirectory\\");

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

// Acceda a la primera hoja de trabajo en el archivo de Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// crear un rango
intrusive_ptr<IRange> range = worksheet->GetICells()->CreateIRange(new String("A1:D4"));

// Establecer nombre de rango
range->SetName(new String("Named_Range"));

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

// Establecer alineación horizontal
style->SetHorizontalAlignment(TextAlignmentType::TextAlignmentType_Center);

// Crear un objeto StyleFlag
intrusive_ptr<IStyleFlag> styleFlag = Factory::CreateIStyleFlag();

// Establecer alineación horizontal to true
styleFlag->SetHorizontalAlignment(true);

// Aplicar el estilo al rango.
range->ApplyIStyle(style, styleFlag);

// Poner datos en el rango
range->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("This is a test value"));

// Rango de fusión
range->Merge();

// Guarde el archivo de Excel
workbook->Save(outDir->StringAppend(new String("MergeNamedRange_out.xlsx")));
Imagen del archivo de salida de Excel generado por el código de muestra

Imagen del archivo de salida de Excel generado por el código de muestra

Obtenga una licencia gratis

Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.

Conclusión

En este artículo, aprendió cómo combinar y descombinar celdas en una hoja de cálculo de Excel usando C++. Además, ha visto cómo fusionar y separar rangos y rangos con nombre usando Aspose.Cells for C++. La API proporciona muchas funciones adicionales para trabajar con archivos de Excel que puede explorar en detalle visitando la documentación oficial. Si tiene alguna pregunta, no dude en comunicarse con nosotros en nuestro foro de soporte gratuito.

Ver también