MergeCells 类

定义

定义 MergeCells 类。

此类在 Office 2007 及更高版本中可用。

将对象序列化为 xml 时,其限定名称为 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
继承
继承
属性

示例

下面的代码示例合并现有电子表格中的两个相邻单元格。 运行示例后,查看文件并注意合并的单元格。

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  

注解

[ISO/IEC 29500-1 第 1 版]

mergeCells (合并单元格)

此集合表示工作表中的所有合并单元格。

[示例

此示例显示合并了三个区域。 合并区域的格式和内容始终存储在左上角的单元格中。

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

示例结束]

父元素
worksheet (§18.3.1.99)
子元素
mergeCell (合并单元格) §18.3.1.54
属性 说明
count (Count) 合并的单元格集合的计数。

此属性的可能值由 W3C XML 架构 unsignedInt 数据类型定义。

[注意:此元素的内容模型 (CT_MergeCells) 的 W3C XML 架构定义位于 §A.2 中。 注释结束]

ISO/IEC29500:2008。

构造函数

MergeCells()

初始化 MergeCells 类的新实例。

MergeCells(IEnumerable<OpenXmlElement>)

使用指定的子元素初始化 MergeCells 类的新实例。

MergeCells(OpenXmlElement[])

使用指定的子元素初始化 MergeCells 类的新实例。

MergeCells(String)

从外部 XML 初始化 MergeCells 类的新实例。

属性

ChildElements

获取当前元素的所有子节点。

(继承自 OpenXmlElement)
Count

记数

表示架构中的以下属性:count

ExtendedAttributes

获取当前元素的架构) 中未定义的所有扩展属性 (属性。

(继承自 OpenXmlElement)
Features

IFeatureCollection获取当前元素的 。 此功能集合将是只读的,但会从其父部件和包继承功能(如果可用)。

(继承自 OpenXmlElement)
FirstChild

获取当前 OpenXmlElement 元素的第一个子元素。

(继承自 OpenXmlCompositeElement)
HasAttributes

获取一个值,该值指示当前元素是否具有任何属性。

(继承自 OpenXmlElement)
HasChildren

获取一个值,该值指示当前元素是否具有任何子元素。

(继承自 OpenXmlCompositeElement)
InnerText

获取或设置当前节点及其所有子节点的串联值。

(继承自 OpenXmlCompositeElement)
InnerXml

获取或设置仅表示当前节点的子节点的标记。

(继承自 OpenXmlCompositeElement)
LastChild

获取当前 OpenXmlElement 元素的最后一个子元素。 如果没有这样的 OpenXmlElement 元素,则返回 null (Visual Basic) Nothing。

(继承自 OpenXmlCompositeElement)
LocalName

定义 MergeCells 类。

此类在 Office 2007 及更高版本中可用。

将对象序列化为 xml 时,其限定名称为 x:mergeCells。

LocalName

获取当前元素的本地名称。

(继承自 OpenXmlElement)
MCAttributes

获取或设置标记兼容性属性。 如果未为当前元素定义标记兼容性属性,则返回 null。

(继承自 OpenXmlElement)
NamespaceDeclarations

获取在当前元素中定义的所有命名空间声明。 如果没有命名空间声明,则返回空枚举器。

(继承自 OpenXmlElement)
NamespaceUri

获取当前元素的命名空间 URI。

(继承自 OpenXmlElement)
OpenXmlElementContext

获取当前元素的 OpenXmlElementContext。

(继承自 OpenXmlElement)
OuterXml

获取表示当前元素及其所有子元素的标记。

(继承自 OpenXmlElement)
Parent

获取当前元素的父元素。

(继承自 OpenXmlElement)
Prefix

获取当前元素的命名空间前缀。

(继承自 OpenXmlElement)
XmlQualifiedName

获取当前元素的限定名称。

(继承自 OpenXmlElement)
XName

获取当前元素的限定名称。

(继承自 OpenXmlElement)

方法

AddAnnotation(Object)

将 对象添加到当前 OpenXmlElement 元素的批注列表中。

(继承自 OpenXmlElement)
AddChild(OpenXmlElement, Boolean)

如果指定元素是已知的子元素,则将其添加到 元素。 这会根据架构将 元素添加到正确的位置。

(继承自 OpenXmlCompositeElement)
AddNamespaceDeclaration(String, String)

将命名空间声明添加到当前节点。

(继承自 OpenXmlElement)
Ancestors()

枚举当前元素的所有上级。

(继承自 OpenXmlElement)
Ancestors<T>()

仅枚举具有指定类型的当前元素的上级。

(继承自 OpenXmlElement)
Annotation(Type)

从当前 OpenXmlElement 元素获取指定类型的第一个批注对象。

(继承自 OpenXmlElement)
Annotation<T>()

从当前 OpenXmlElement 元素获取指定类型的第一个批注对象。

(继承自 OpenXmlElement)
Annotations(Type)

获取具有当前 OpenXmlElement 元素的指定类型的批注的集合。

(继承自 OpenXmlElement)
Annotations<T>()

获取具有当前 OpenXmlElement 元素的指定类型的批注的集合。

(继承自 OpenXmlElement)
Append(IEnumerable<OpenXmlElement>)

将元素列表中的每个元素追加到当前元素的子元素列表的末尾。

(继承自 OpenXmlElement)
Append(OpenXmlElement[])

将元素数组中的每个元素追加到当前元素的子元素列表的末尾。

(继承自 OpenXmlElement)
AppendChild<T>(T)

将指定的元素追加到当前元素的子节点列表的末尾。

(继承自 OpenXmlCompositeElement)
ClearAllAttributes()

清除所有属性,包括已知属性和扩展属性。

(继承自 OpenXmlElement)
Clone()

创建当前节点的副本。

(继承自 OpenXmlElement)
CloneNode(Boolean)

创建此节点的副本。

Descendants()

枚举当前元素的所有后代。

(继承自 OpenXmlElement)
Descendants<T>()

枚举类型为 T 的当前元素的所有后代。

(继承自 OpenXmlElement)
Elements()

枚举当前元素的所有子元素。

(继承自 OpenXmlElement)
Elements<T>()

仅枚举具有指定类型的当前元素的子元素。

(继承自 OpenXmlElement)
ElementsAfter()

枚举与当前元素相同的父级的所有同级元素。

(继承自 OpenXmlElement)
ElementsBefore()

枚举当前元素之前且具有与当前元素相同的父级的所有同级元素。

(继承自 OpenXmlElement)
GetAttribute(String, String)

获取具有指定标记名称和命名空间 URI 的 Open XML 属性。

(继承自 OpenXmlElement)
GetAttributes()

获取一个列表,该列表包含所有属性的副本。

(继承自 OpenXmlElement)
GetEnumerator()

返回循环访问子集合的枚举器。

(继承自 OpenXmlElement)
GetFirstChild<T>()

查找类型 T 中的第一个子元素。

(继承自 OpenXmlElement)
InsertAfter<T>(T, OpenXmlElement)

在指定的引用元素之后立即插入指定的元素。

(继承自 OpenXmlCompositeElement)
InsertAfterSelf<T>(T)

在当前元素之后立即插入指定的元素。

(继承自 OpenXmlElement)
InsertAt<T>(T, Int32)

在当前元素的子元素的指定索引处插入指定的元素。

(继承自 OpenXmlCompositeElement)
InsertBefore<T>(T, OpenXmlElement)

将指定的元素紧接在指定的引用元素之前。

(继承自 OpenXmlCompositeElement)
InsertBeforeSelf<T>(T)

将指定的元素紧接在当前元素的前面。

(继承自 OpenXmlElement)
IsAfter(OpenXmlElement)

确定当前元素是否以文档顺序显示在指定元素之后。

(继承自 OpenXmlElement)
IsBefore(OpenXmlElement)

确定当前元素是否按文档顺序显示在指定元素之前。

(继承自 OpenXmlElement)
LookupNamespace(String)

解析当前节点上下文中的命名空间前缀。

(继承自 OpenXmlElement)
LookupPrefix(String)

查找当前元素范围内命名空间 URI 的相应前缀。

(继承自 OpenXmlElement)
NextSibling()

获取紧跟在当前 OpenXmlElement 元素后面的 OpenXmlElement 元素。 如果没有下一个 OpenXmlElement 元素,则返回 null (Visual Basic) Nothing。

(继承自 OpenXmlElement)
NextSibling<T>()

获取具有当前 OpenXmlElement 元素后面的指定类型的 OpenXmlElement 元素。 如果没有下一个 OpenXmlElement,则返回 null (Visual Basic) Nothing。

(继承自 OpenXmlElement)
PrependChild<T>(T)

在当前元素的子节点列表的开头插入指定的元素。

(继承自 OpenXmlCompositeElement)
PreviousSibling()

获取紧接在当前 OpenXmlElement 元素之前的 OpenXmlElement 元素。 如果没有前面的 OpenXmlElement 元素,则返回 null (Visual Basic ) 中 Nothing。

(继承自 OpenXmlElement)
PreviousSibling<T>()

获取位于当前 OpenXmlElement 之前的指定类型的 OpenXmlElement 元素。 如果没有前面的 OpenXmlElement 元素,则返回 null (Visual Basic) Nothing。

(继承自 OpenXmlElement)
Remove()

从其父元素中删除当前元素。

(继承自 OpenXmlElement)
RemoveAllChildren()

删除当前元素的所有子元素。

(继承自 OpenXmlCompositeElement)
RemoveAllChildren<T>()

删除类型为 T 的当前元素的所有子元素。

(继承自 OpenXmlElement)
RemoveAnnotations(Type)

从当前 OpenXmlElement 元素中删除指定类型的注释。

(继承自 OpenXmlElement)
RemoveAnnotations<T>()

从当前 OpenXmlElement 元素中删除具有指定类型的批注。

(继承自 OpenXmlElement)
RemoveAttribute(String, String)

从当前元素中删除 属性。

(继承自 OpenXmlElement)
RemoveChild<T>(T)

删除指定的子元素。

(继承自 OpenXmlCompositeElement)
RemoveNamespaceDeclaration(String)

删除指定前缀的命名空间声明。 如果没有前缀,则不删除任何内容。

(继承自 OpenXmlElement)
ReplaceChild<T>(OpenXmlElement, T)

将当前元素的子元素之一替换为另一个 OpenXmlElement 元素。

(继承自 OpenXmlCompositeElement)
SetAttribute(OpenXmlAttribute)

将特性设置为指定的元素。 如果该属性是已知属性,则设置该特性的值。 如果该属性是扩展属性,则会将“openxmlAttribute”添加到扩展属性列表中。

(继承自 OpenXmlElement)
SetAttributes(IEnumerable<OpenXmlAttribute>)

设置元素的多个属性。 如果属性是已知属性,则会设置该属性的值。 如果属性是扩展属性,则会将“openxmlAttribute”添加到扩展属性列表中。

(继承自 OpenXmlElement)
WriteTo(XmlWriter)

将当前节点保存到指定的 XmlWriter。

(继承自 OpenXmlElement)

显式接口实现

IEnumerable.GetEnumerator()

定义 MergeCells 类。

此类在 Office 2007 及更高版本中可用。

将对象序列化为 xml 时,其限定名称为 x:mergeCells。

(继承自 OpenXmlElement)
IEnumerable<OpenXmlElement>.GetEnumerator()

返回循环访问子集合的枚举器。

(继承自 OpenXmlElement)

适用于