Compartir a través de


MergeCells Clase

Definición

Define la clase MergeCells.

Esta clase está disponible en Office 2007 y versiones posteriores.

Cuando el objeto se serializa como xml, su nombre completo es x:mergeCells.

[DocumentFormat.OpenXml.ChildElementInfo(typeof(DocumentFormat.OpenXml.Spreadsheet.MergeCell))]
[DocumentFormat.OpenXml.OfficeAvailability(DocumentFormat.OpenXml.FileFormatVersions.Office2007)]
[DocumentFormat.OpenXml.SchemaAttr(22, "mergeCells")]
public class MergeCells : DocumentFormat.OpenXml.OpenXmlCompositeElement
public class MergeCells : DocumentFormat.OpenXml.OpenXmlCompositeElement
[DocumentFormat.OpenXml.SchemaAttr(22, "mergeCells")]
public class MergeCells : DocumentFormat.OpenXml.OpenXmlCompositeElement
[DocumentFormat.OpenXml.SchemaAttr("x:mergeCells")]
public class MergeCells : DocumentFormat.OpenXml.OpenXmlCompositeElement
[DocumentFormat.OpenXml.SchemaAttr("x:mergeCells")]
public class MergeCells : DocumentFormat.OpenXml.TypedOpenXmlCompositeElement
[DocumentFormat.OpenXml.ChildElementInfo(typeof(DocumentFormat.OpenXml.Spreadsheet.MergeCell))]
public class MergeCells : DocumentFormat.OpenXml.OpenXmlCompositeElement
[DocumentFormat.OpenXml.ChildElementInfo(typeof(DocumentFormat.OpenXml.Spreadsheet.MergeCell))]
[DocumentFormat.OpenXml.OfficeAvailability(DocumentFormat.OpenXml.FileFormatVersions.Office2007)]
public class MergeCells : DocumentFormat.OpenXml.OpenXmlCompositeElement
[<DocumentFormat.OpenXml.ChildElementInfo(typeof(DocumentFormat.OpenXml.Spreadsheet.MergeCell))>]
[<DocumentFormat.OpenXml.OfficeAvailability(DocumentFormat.OpenXml.FileFormatVersions.Office2007)>]
[<DocumentFormat.OpenXml.SchemaAttr(22, "mergeCells")>]
type MergeCells = class
    inherit OpenXmlCompositeElement
type MergeCells = class
    inherit OpenXmlCompositeElement
[<DocumentFormat.OpenXml.SchemaAttr(22, "mergeCells")>]
type MergeCells = class
    inherit OpenXmlCompositeElement
[<DocumentFormat.OpenXml.SchemaAttr("x:mergeCells")>]
type MergeCells = class
    inherit OpenXmlCompositeElement
[<DocumentFormat.OpenXml.SchemaAttr("x:mergeCells")>]
type MergeCells = class
    inherit TypedOpenXmlCompositeElement
[<DocumentFormat.OpenXml.ChildElementInfo(typeof(DocumentFormat.OpenXml.Spreadsheet.MergeCell))>]
type MergeCells = class
    inherit OpenXmlCompositeElement
[<DocumentFormat.OpenXml.ChildElementInfo(typeof(DocumentFormat.OpenXml.Spreadsheet.MergeCell))>]
[<DocumentFormat.OpenXml.OfficeAvailability(DocumentFormat.OpenXml.FileFormatVersions.Office2007)>]
type MergeCells = class
    inherit OpenXmlCompositeElement
Public Class MergeCells
Inherits OpenXmlCompositeElement
Public Class MergeCells
Inherits TypedOpenXmlCompositeElement
Herencia
Herencia
Atributos

Ejemplos

En el ejemplo de código siguiente se combinan dos celdas adyacentes en una hoja de cálculo existente. Después de ejecutar el ejemplo, eche un vistazo al archivo y observe las celdas combinadas.

using System;  
using System.Collections.Generic;  
using System.Linq;  
using DocumentFormat.OpenXml;  
using DocumentFormat.OpenXml.Packaging;  
using DocumentFormat.OpenXml.Spreadsheet;  
using System.Text.RegularExpressions;  

namespace MergeCellsEx  
{  
    class Program  
    {  
        // Merge two adjacent cells in a worksheet.  
        // Notice that after the merge, only the content from one cell is preserved.  
        static void Main(string[] args)  
        {  
            string docName = @"C:\Users\Public\Documents\MergeCellsEx.xlsx";  
            string sheetName = "mySheet";  
            string cell1Name = "A2";  
            string cell2Name = "B2";  

            using (SpreadsheetDocument document = SpreadsheetDocument.Open(docName, true))  
            {  
                Worksheet worksheet = GetWorksheet(document, sheetName);  
                // Create Spreadsheet cells.  
                CreateSpreadsheetCell(worksheet, cell1Name);  
                CreateSpreadsheetCell(worksheet, cell2Name);  
                MergeCells mergeCells;  

                if (worksheet.Elements<MergeCells>().Count() > 0)  
                    mergeCells = worksheet.Elements<MergeCells>().First();  
                else  
                {  
                    mergeCells = new MergeCells();  

                    // Insert a MergeCells object into the specified position.  
                    if (worksheet.Elements<CustomSheetView>().Count() > 0)  
                         worksheet.InsertAfter(mergeCells, worksheet.Elements<CustomSheetView>().First());  
                    else  
                        worksheet.InsertAfter(mergeCells, worksheet.Elements<SheetData>().First());  
                }  

                // Create the merged cell and append it to the MergeCells collection.  
                MergeCell mergeCell = new MergeCell() { Reference =   
                    new StringValue(cell1Name + ":" + cell2Name) };  
                mergeCells.Append(mergeCell);  
                worksheet.Save();  
            }  
            Console.WriteLine("The two cells are now merged.\nPress a key.");  
            Console.ReadKey();  
        }  

        // Get the specified worksheet.  
        private static Worksheet GetWorksheet(SpreadsheetDocument document, string worksheetName)  
        {  
            IEnumerable<Sheet> sheets = document.WorkbookPart.Workbook  
                .Descendants<Sheet>().Where(s => s.Name == worksheetName);  
            WorksheetPart worksheetPart = (WorksheetPart)document.WorkbookPart  
                .GetPartById(sheets.First().Id);  
            return worksheetPart.Worksheet;  
        }  

        // Create a spreadsheet cell.   
        private static void CreateSpreadsheetCell(Worksheet worksheet, string cellName)  
        {  
            string columnName = GetColumnName(cellName);  
            uint rowIndex = 2;  
            IEnumerable<Row> rows = worksheet.Descendants<Row>().Where(r => r  
                .RowIndex.Value == rowIndex);  
            Row row = rows.First();  
            IEnumerable<Cell> cells = row.Elements<Cell>().Where(c => c.CellReference  
                .Value == cellName);  
        }  

        // Parse the cell name to get the column name.  
        private static string GetColumnName(string cellName)  
        {  
            // Create a regular expression to match the column name portion of the cell name.  
            Regex regex = new Regex("[A-Za-z]+");  
            Match match = regex.Match(cellName);  
            return match.Value;  
        }  
    }  
}  
Imports System.Collections.Generic  
Imports System.Linq  
Imports DocumentFormat.OpenXml  
Imports DocumentFormat.OpenXml.Packaging  
Imports DocumentFormat.OpenXml.Spreadsheet  
Imports System.Text.RegularExpressions  

Module Module1  
    ' Merge two adjacent cells in a worksheet.  
    ' Notice that after the merge, only the content from one cell is preserved.  
    Sub Main(ByVal args As String())  
        Dim docName As String = "C:\Users\Public\Documents\MergeCellsEx.xlsx"  
        Dim sheetName As String = "mySheet"  
        Dim cell1Name As String = "A2"  
        Dim cell2Name As String = "B2"  

        Using document As SpreadsheetDocument = SpreadsheetDocument.Open(docName, True)  
            Dim worksheet As Worksheet = GetWorksheet(document, sheetName)  
            ' Create Spreadsheet cells.  
            CreateSpreadsheetCell(worksheet, cell1Name)  
            CreateSpreadsheetCell(worksheet, cell2Name)  
            Dim mergeCells As MergeCells  

            If worksheet.Elements(Of MergeCells)().Count() > 0 Then  
                mergeCells = worksheet.Elements(Of MergeCells)().First()  
            Else  
                mergeCells = New MergeCells()  

                ' Insert a MergeCells object into the specified position.  
                If worksheet.Elements(Of CustomSheetView)().Count() > 0 Then  
                    worksheet.InsertAfter(mergeCells, worksheet.Elements(Of CustomSheetView)().First())  
                Else  
                    worksheet.InsertAfter(mergeCells, worksheet.Elements(Of SheetData)().First())  
                End If  
            End If  

            ' Create the merged cell and append it to the MergeCells collection.  
            Dim mergeCell As New MergeCell() With { _  
             .Reference = New StringValue(cell1Name & ":" & cell2Name) _  
            }  
            mergeCells.Append(mergeCell)  
            worksheet.Save()  
        End Using  
        Console.WriteLine("The two cells are now merged." & vbLf & "Press a key.")  
        Console.ReadKey()  
    End Sub  

    ' Get the specified worksheet.  
    Private Function GetWorksheet(ByVal document As SpreadsheetDocument, ByVal worksheetName As String) As Worksheet  
        Dim sheets As IEnumerable(Of Sheet) = document.WorkbookPart.Workbook.Descendants(Of Sheet)().Where(Function(s) s.Name = worksheetName)  
        Dim worksheetPart As WorksheetPart = DirectCast(document.WorkbookPart.GetPartById(sheets.First().Id), WorksheetPart)  
        Return worksheetPart.Worksheet  
    End Function  

    ' Create a spreadsheet cell.   
    Private Sub CreateSpreadsheetCell(ByVal worksheet As Worksheet, ByVal cellName As String)  
        Dim columnName As String = GetColumnName(cellName)  
        Dim rowIndex As UInteger = 2  
        Dim rows As IEnumerable(Of Row) = worksheet.Descendants(Of Row)().Where(Function(r) r.RowIndex.Value = rowIndex)  
        Dim row As Row = rows.First()  
        Dim cells As IEnumerable(Of Cell) = row.Elements(Of Cell)().Where(Function(c) c.CellReference.Value = cellName)  
    End Sub  

    ' Parse the cell name to get the column name.  
    Private Function GetColumnName(ByVal cellName As String) As String  
        ' Create a regular expression to match the column name portion of the cell name.  
        Dim regex As New Regex("[A-Za-z]+")  
        Dim match As Match = regex.Match(cellName)  
        Return match.Value  
    End Function  
End Module  

Comentarios

[ISO/IEC 29500-1 1.ª edición]

mergeCells (Combinar celdas)

Esta colección expresa todas las celdas combinadas de la hoja.

[Ejemplo:

En este ejemplo se muestra que se combinan tres intervalos. El formato y el contenido del rango combinado siempre se almacenan en la celda superior izquierda.

<mergeCells>  
  <mergeCell ref="C2:F2"/>  
  <mergeCell ref="B19:C20"/>  
  <mergeCell ref="E19:G19"/>  
</mergeCells>  

Fin del ejemplo]

Elementos primarios
hoja de cálculo (§18.3.1.99)
Elementos secundarios Subclause
mergeCell (celda combinada) §18.3.1.54
Atributos Descripción
count (Count) Recuento de colecciones de celdas combinadas.

Los valores posibles para este atributo los define el tipo de datos unsignedInt del esquema XML W3C.

[Nota: La definición del esquema XML W3C del modelo de contenido de este elemento (CT_MergeCells) se encuentra en §A.2. Fin de la nota]

ISO/IEC29500: 2008.

Constructores

MergeCells()

Inicializa una nueva instancia de la clase MergeCells.

MergeCells(IEnumerable<OpenXmlElement>)

Inicializa una nueva instancia de la clase MergeCells con los elementos secundarios especificados.

MergeCells(OpenXmlElement[])

Inicializa una nueva instancia de la clase MergeCells con los elementos secundarios especificados.

MergeCells(String)

Inicializa una nueva instancia de la clase MergeCells a partir de XML externo.

Propiedades

ChildElements

Obtiene todos los nodos secundarios del elemento actual.

(Heredado de OpenXmlElement)
Count

Count

Representa el atributo siguiente en el esquema: count

ExtendedAttributes

Obtiene todos los atributos extendidos (atributos no definidos en el esquema) del elemento actual.

(Heredado de OpenXmlElement)
Features

Obtiene un IFeatureCollection para el elemento actual. Esta colección de características será de solo lectura, pero heredará características de su elemento primario y paquete si está disponible.

(Heredado de OpenXmlElement)
FirstChild

Obtiene el primer elemento secundario del elemento OpenXmlElement actual.

(Heredado de OpenXmlCompositeElement)
HasAttributes

Obtiene un valor que indica si el elemento actual tiene atributos.

(Heredado de OpenXmlElement)
HasChildren

Obtiene un valor que indica si el elemento actual tiene algún elemento secundario.

(Heredado de OpenXmlCompositeElement)
InnerText

Obtiene o establece los valores concatenados del nodo actual y todos sus elementos secundarios.

(Heredado de OpenXmlCompositeElement)
InnerXml

Obtiene o establece el marcado que representa solo los nodos secundarios del nodo actual.

(Heredado de OpenXmlCompositeElement)
LastChild

Obtiene el último elemento secundario del elemento OpenXmlElement actual. Devuelve null (Nothing en Visual Basic) si no hay ningún elemento OpenXmlElement de este tipo.

(Heredado de OpenXmlCompositeElement)
LocalName

Define la clase MergeCells.

Esta clase está disponible en Office 2007 y versiones posteriores.

Cuando el objeto se serializa como xml, su nombre completo es x:mergeCells.

LocalName

Obtiene el nombre local del elemento actual.

(Heredado de OpenXmlElement)
MCAttributes

Obtiene o establece los atributos de compatibilidad de marcado. Devuelve null si no se definen atributos de compatibilidad de marcado para el elemento actual.

(Heredado de OpenXmlElement)
NamespaceDeclarations

Obtiene todas las declaraciones de espacio de nombres definidas en el elemento actual. Devuelve un enumerador vacío si no hay ninguna declaración de espacio de nombres.

(Heredado de OpenXmlElement)
NamespaceUri

Obtiene el URI del espacio de nombres del elemento actual.

(Heredado de OpenXmlElement)
OpenXmlElementContext

Obtiene el Objeto OpenXmlElementContext del elemento actual.

(Heredado de OpenXmlElement)
OuterXml

Obtiene el marcado que representa el elemento actual y todos sus elementos secundarios.

(Heredado de OpenXmlElement)
Parent

Obtiene el elemento primario del elemento actual.

(Heredado de OpenXmlElement)
Prefix

Obtiene el prefijo de espacio de nombres del elemento actual.

(Heredado de OpenXmlElement)
XmlQualifiedName

Obtiene el nombre completo del elemento actual.

(Heredado de OpenXmlElement)
XName

Obtiene el nombre completo del elemento actual.

(Heredado de OpenXmlElement)

Métodos

AddAnnotation(Object)

Agrega un objeto a la lista de anotaciones del elemento OpenXmlElement actual.

(Heredado de OpenXmlElement)
AddChild(OpenXmlElement, Boolean)

Agrega el elemento especificado al elemento si es un elemento secundario conocido. Esto agrega el elemento en la ubicación correcta según el esquema.

(Heredado de OpenXmlCompositeElement)
AddNamespaceDeclaration(String, String)

Agrega una declaración de espacio de nombres al nodo actual.

(Heredado de OpenXmlElement)
Ancestors()

Enumera todos los antecesores del elemento actual.

(Heredado de OpenXmlElement)
Ancestors<T>()

Enumera solo los antecesores del elemento actual que tienen el tipo especificado.

(Heredado de OpenXmlElement)
Annotation(Type)

Obtenga el primer objeto de anotación del tipo especificado del elemento OpenXmlElement actual.

(Heredado de OpenXmlElement)
Annotation<T>()

Obtenga el primer objeto de anotación del tipo especificado del elemento OpenXmlElement actual.

(Heredado de OpenXmlElement)
Annotations(Type)

Obtiene una colección de anotaciones con el tipo especificado para el elemento OpenXmlElement actual.

(Heredado de OpenXmlElement)
Annotations<T>()

Obtiene una colección de anotaciones con el tipo especificado para el elemento OpenXmlElement actual.

(Heredado de OpenXmlElement)
Append(IEnumerable<OpenXmlElement>)

Anexa cada elemento de una lista de elementos al final de la lista de elementos secundarios del elemento actual.

(Heredado de OpenXmlElement)
Append(OpenXmlElement[])

Anexa cada elemento de una matriz de elementos al final de la lista de elementos secundarios del elemento actual.

(Heredado de OpenXmlElement)
AppendChild<T>(T)

Anexa el elemento especificado al final de la lista de nodos secundarios del elemento actual.

(Heredado de OpenXmlCompositeElement)
ClearAllAttributes()

Borra todos los atributos, incluidos los atributos conocidos y los atributos extendidos.

(Heredado de OpenXmlElement)
Clone()

Crea un duplicado del nodo actual.

(Heredado de OpenXmlElement)
CloneNode(Boolean)

Crea un duplicado de este nodo.

Descendants()

Enumera todos los descendientes del elemento actual.

(Heredado de OpenXmlElement)
Descendants<T>()

Enumera todos los descendientes del elemento actual del tipo T.

(Heredado de OpenXmlElement)
Elements()

Enumera todos los elementos secundarios del elemento actual.

(Heredado de OpenXmlElement)
Elements<T>()

Enumera solo los elementos secundarios del elemento actual que tienen el tipo especificado.

(Heredado de OpenXmlElement)
ElementsAfter()

Enumera todos los elementos del mismo nivel que siguen el elemento actual y tienen el mismo elemento primario que el elemento actual.

(Heredado de OpenXmlElement)
ElementsBefore()

Enumera todos los elementos del mismo nivel que preceden al elemento actual y tienen el mismo elemento primario que el elemento actual.

(Heredado de OpenXmlElement)
GetAttribute(String, String)

Obtiene un atributo Open XML con el nombre de etiqueta y el URI de espacio de nombres especificados.

(Heredado de OpenXmlElement)
GetAttributes()

Obtiene una lista que contiene una copia de todos los atributos.

(Heredado de OpenXmlElement)
GetEnumerator()

Devuelve un enumerador que recorre en iteración la colección secundaria.

(Heredado de OpenXmlElement)
GetFirstChild<T>()

Busca el primer elemento secundario en el tipo T.

(Heredado de OpenXmlElement)
InsertAfter<T>(T, OpenXmlElement)

Inserta el elemento especificado inmediatamente después del elemento de referencia especificado.

(Heredado de OpenXmlCompositeElement)
InsertAfterSelf<T>(T)

Inserta el elemento especificado inmediatamente después del elemento actual.

(Heredado de OpenXmlElement)
InsertAt<T>(T, Int32)

Inserta el elemento especificado en el índice especificado de los elementos secundarios del elemento actual.

(Heredado de OpenXmlCompositeElement)
InsertBefore<T>(T, OpenXmlElement)

Inserta el elemento especificado inmediatamente antes del elemento de referencia especificado.

(Heredado de OpenXmlCompositeElement)
InsertBeforeSelf<T>(T)

Inserta el elemento especificado inmediatamente antes del elemento actual.

(Heredado de OpenXmlElement)
IsAfter(OpenXmlElement)

Determina si el elemento actual aparece después de un elemento especificado en el orden del documento.

(Heredado de OpenXmlElement)
IsBefore(OpenXmlElement)

Determina si el elemento actual aparece antes que un elemento especificado en el orden del documento.

(Heredado de OpenXmlElement)
LookupNamespace(String)

Resuelve el prefijo de espacio de nombres en el contexto del nodo actual.

(Heredado de OpenXmlElement)
LookupPrefix(String)

Busca el prefijo correspondiente para un uri de espacio de nombres en el ámbito del elemento actual.

(Heredado de OpenXmlElement)
NextSibling()

Obtiene el elemento OpenXmlElement que sigue inmediatamente al elemento OpenXmlElement actual. Devuelve null (Nothing en Visual Basic) si no hay ningún elemento OpenXmlElement siguiente.

(Heredado de OpenXmlElement)
NextSibling<T>()

Obtiene el elemento OpenXmlElement con el tipo especificado que sigue al elemento OpenXmlElement actual. Devuelve null (Nothing en Visual Basic) si no hay ningún elemento OpenXmlElement siguiente.

(Heredado de OpenXmlElement)
PrependChild<T>(T)

Inserta el elemento especificado al principio de la lista de nodos secundarios del elemento actual.

(Heredado de OpenXmlCompositeElement)
PreviousSibling()

Obtiene el elemento OpenXmlElement que precede inmediatamente al elemento OpenXmlElement actual. Devuelve null (Nothing en Visual Basic ) si no hay ningún elemento OpenXmlElement anterior.

(Heredado de OpenXmlElement)
PreviousSibling<T>()

Obtiene el elemento OpenXmlElement con el tipo especificado que precede al objeto OpenXmlElement actual. Devuelve null (Nothing en Visual Basic) si no hay ningún elemento OpenXmlElement anterior.

(Heredado de OpenXmlElement)
Remove()

Quita el elemento actual de su elemento primario.

(Heredado de OpenXmlElement)
RemoveAllChildren()

Quita todos los elementos secundarios del elemento actual.

(Heredado de OpenXmlCompositeElement)
RemoveAllChildren<T>()

Quite todos los elementos secundarios del elemento actual que son de tipo T.

(Heredado de OpenXmlElement)
RemoveAnnotations(Type)

Quita las anotaciones del tipo especificado del elemento OpenXmlElement actual.

(Heredado de OpenXmlElement)
RemoveAnnotations<T>()

Quita las anotaciones con el tipo especificado del elemento OpenXmlElement actual.

(Heredado de OpenXmlElement)
RemoveAttribute(String, String)

Quita el atributo del elemento actual.

(Heredado de OpenXmlElement)
RemoveChild<T>(T)

Quita el elemento secundario especificado.

(Heredado de OpenXmlCompositeElement)
RemoveNamespaceDeclaration(String)

Quita la declaración de espacio de nombres para el prefijo especificado. No quita nada si no hay ningún prefijo.

(Heredado de OpenXmlElement)
ReplaceChild<T>(OpenXmlElement, T)

Reemplaza uno de los elementos secundarios del elemento actual por otro elemento OpenXmlElement.

(Heredado de OpenXmlCompositeElement)
SetAttribute(OpenXmlAttribute)

Establece un atributo en el elemento especificado. Si el atributo es un atributo conocido, se establece el valor del atributo. Si el atributo es un atributo extendido, el atributo "openxmlAttribute" se agrega a la lista de atributos extendidos.

(Heredado de OpenXmlElement)
SetAttributes(IEnumerable<OpenXmlAttribute>)

Establece una serie de atributos en el elemento . Si un atributo es un atributo conocido, se establece el valor del atributo. Si un atributo es un atributo extendido, el atributo "openxmlAttribute" se agrega a la lista de atributos extendidos.

(Heredado de OpenXmlElement)
WriteTo(XmlWriter)

Guarda el nodo actual en el objeto XmlWriter especificado.

(Heredado de OpenXmlElement)

Implementaciones de interfaz explícitas

IEnumerable.GetEnumerator()

Define la clase MergeCells.

Esta clase está disponible en Office 2007 y versiones posteriores.

Cuando el objeto se serializa como xml, su nombre completo es x:mergeCells.

(Heredado de OpenXmlElement)
IEnumerable<OpenXmlElement>.GetEnumerator()

Devuelve un enumerador que recorre en iteración la colección secundaria.

(Heredado de OpenXmlElement)

Se aplica a