Поделиться через


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>  

конец примера

Родительские элементы
лист (§18.3.1.99)
Дочерние элементы Вложенные запросы
mergeCell (объединенная ячейка) §18.3.1.54
Атрибуты Описание
count (count) Количество объединенных коллекций ячеек.

Возможные значения для этого атрибута определены в типе данных unsignedInt схемы W3C XML.

[Примечание. Определение xml-схемы W3C для модели содержимого этого элемента (CT_MergeCells) находится в §A.2. конечная заметка]

ISO/IEC29500: 2008.

Конструкторы

MergeCells()

Инициализирует новый экземпляр класса MergeCells.

MergeCells(IEnumerable<OpenXmlElement>)

Инициализирует новый экземпляр класса MergeCells указанными дочерними элементами.

MergeCells(OpenXmlElement[])

Инициализирует новый экземпляр класса MergeCells указанными дочерними элементами.

MergeCells(String)

Инициализирует новый экземпляр класса MergeCells из внешнего XML-кода.

Свойства

ChildElements

Возвращает все дочерние узлы текущего элемента.

(Унаследовано от OpenXmlElement)
Count

Count

Представляет следующий атрибут в схеме: count

ExtendedAttributes

Возвращает все расширенные атрибуты (атрибуты, не определенные в схеме) текущего элемента.

(Унаследовано от OpenXmlElement)
Features

IFeatureCollection Возвращает для текущего элемента. Эта коллекция компонентов будет доступна только для чтения, но будет наследовать компоненты от родительской части и пакета, если они доступны.

(Унаследовано от OpenXmlElement)
FirstChild

Получает первый дочерний элемент текущего элемента OpenXmlElement.

(Унаследовано от OpenXmlCompositeElement)
HasAttributes

Возвращает значение, указывающее, имеет ли текущий элемент какие-либо атрибуты.

(Унаследовано от OpenXmlElement)
HasChildren

Возвращает значение, указывающее, содержит ли текущий элемент какие-либо дочерние элементы.

(Унаследовано от OpenXmlCompositeElement)
InnerText

Возвращает или задает объединенные значения текущего узла и всех его дочерних элементов.

(Унаследовано от OpenXmlCompositeElement)
InnerXml

Возвращает или задает разметку, представляющую только дочерние узлы текущего узла.

(Унаследовано от OpenXmlCompositeElement)
LastChild

Возвращает последний дочерний элемент текущего элемента OpenXmlElement. Возвращает значение NULL (Nothing в Visual Basic), если такого элемента OpenXmlElement нет.

(Унаследовано от 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)

Возвращает атрибут Open XML с указанным именем тега и URI пространства имен.

(Унаследовано от 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. Возвращает значение NULL (Nothing в Visual Basic), если нет следующего элемента OpenXmlElement.

(Унаследовано от OpenXmlElement)
NextSibling<T>()

Возвращает элемент OpenXmlElement с указанным типом, который следует за текущим элементом OpenXmlElement. Возвращает значение NULL (Nothing в Visual Basic), если нет следующего OpenXmlElement.

(Унаследовано от OpenXmlElement)
PrependChild<T>(T)

Вставляет указанный элемент в начало списка дочерних узлов текущего элемента.

(Унаследовано от OpenXmlCompositeElement)
PreviousSibling()

Возвращает элемент OpenXmlElement, который непосредственно предшествует текущему элементу OpenXmlElement. Возвращает значение NULL (Nothing в Visual Basic), если нет предыдущего элемента OpenXmlElement.

(Унаследовано от OpenXmlElement)
PreviousSibling<T>()

Возвращает элемент OpenXmlElement с указанным типом, который предшествует текущему объекту OpenXmlElement. Возвращает значение NULL (Nothing в Visual Basic), если нет предыдущего элемента OpenXmlElement.

(Унаследовано от 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)

Применяется к