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
- Combinar celdas en una hoja de cálculo de Excel usando C++
- Descombinar celdas en una hoja de cálculo de Excel usando C++
- Combinar un rango de celdas en una hoja de cálculo de Excel usando C++
- Separar un rango de celdas en una hoja de cálculo de Excel usando C++
- Combinar celdas de un rango con nombre en una hoja de cálculo de Excel 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.
- En primer lugar, cree una instancia de la clase IWorkbook.
- Recupere la hoja de cálculo mediante el método IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Recupere las celdas usando el método IWorksheet->GetICells().
- Combine las celdas usando ICells->Merge(Aspose::Cells::Systems::Int32 firstRow, Aspose::Cells::Systems::Int32 firstColumn, Aspose::Cells::Systems::Int32 totalRows, Aspose:: Método Cells::Systems::Int32 totalColumns).
- Aplicar estilos a las celdas combinadas.
- Finalmente, guarde el archivo de salida de Excel usando IWorkbook->Save (intrusive\ptrAspose::Cells::Systems::String nombre de archivo) método.
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")));
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.
- Cargue el archivo de Excel usando la clase IWorkbook.
- Recupere la hoja de cálculo que contiene las celdas combinadas mediante el método IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Recupere las celdas usando el método IWorksheet->GetICells().
- Separe las celdas usando ICells->UnMerge(Aspose::Cells::Systems::Int32 firstRow, Aspose::Cells::Systems::Int32 firstColumn, Aspose::Cells::Systems::Int32 totalRows, Aspose::Cells ::Systems::Int32 totalColumns) método.
- Finalmente, guarde el archivo de salida de Excel usando IWorkbook->Save (intrusive\ptrAspose::Cells::Systems::String nombre de archivo) método.
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")));
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.
- En primer lugar, cree una instancia de la clase IWorkbook.
- Recupere la hoja de trabajo deseada usando el método IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Insertar datos en la celda.
- Cree el rango usando IWorksheet->GetICells()->CreateIRange(intrusive\ptrAspose::Cells::Systems::String dirección) método.
- Combine el rango usando el método IRange->Merge().
- Finalmente, guarde el archivo de salida de Excel usando IWorkbook->Save (intrusive\ptrAspose::Cells::Systems::String nombre de archivo) método.
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")));
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.
- Cargue el archivo de Excel usando la clase IWorkbook.
- Recupere la hoja de cálculo que contiene celdas combinadas mediante el método IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Cree el rango usando IWorksheet->GetICells()->CreateIRange(intrusive\ptrAspose::Cells::Systems::String dirección) método.
- Separe el rango usando el método IRange->UnMerge().
- Finalmente, guarde el archivo de salida de Excel usando IWorkbook->Save (intrusive\ptrAspose::Cells::Systems::String nombre de archivo) método.
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")));
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.
- Cargue el archivo de Excel usando la clase IWorkbook.
- Recupere la hoja de cálculo mediante el método IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Cree el rango usando IWorksheet->GetICells()->CreateIRange(intrusive\ptrAspose::Cells::Systems::String dirección) método.
- Establezca el nombre del rango usando IRange->SetName(intrusive\ptrAspose::Cells::Systems::String valor) método.
- Cree y aplique estilos al rango con nombre.
- Combine las celdas del rango mencionado usando el método IRange->Merge().
- Finalmente, guarde el archivo de salida de Excel usando IWorkbook->Save (intrusive\ptrAspose::Cells::Systems::String nombre de archivo) método.
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")));
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.