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) |