Sfoglia il codice sorgente

Added patch 11608 by arudoy. This patch adds the functionality Table.MergeCellsInColumn(int columnIndex, int startRow, int endRow)

master
coffeycathal_cp 13 anni fa
parent
commit
9e5259f678
1 ha cambiato i file con 58 aggiunte e 0 eliminazioni
  1. 58
    0
      DocX/Table.cs

+ 58
- 0
DocX/Table.cs Vedi File

@@ -20,6 +20,64 @@ namespace Novacode
private Alignment alignment;
private AutoFit autofit;
/// <summary>
/// Merge cells in given column starting with startRow and ending with endRow.
/// </summary>
/// <remarks>
/// Added by arudoy patch: 11608
/// </remarks>
public void MergeCellsInColumn(int columnIndex, int startRow, int endRow)
{
// Check for valid start and end indexes.
if (columnIndex < 0 || columnIndex >= ColumnCount)
throw new IndexOutOfRangeException();
if (startRow < 0 || endRow <= startRow || endRow >= Rows.Count)
throw new IndexOutOfRangeException();
// Foreach each Cell between startIndex and endIndex inclusive.
foreach (Row row in Rows.Where((z, i) => i > startRow && i <= endRow))
{
Cell c = row.Cells[columnIndex];
XElement tcPr = c.Xml.Element(XName.Get("tcPr", DocX.w.NamespaceName));
if (tcPr == null)
{
c.Xml.SetElementValue(XName.Get("tcPr", DocX.w.NamespaceName), string.Empty);
tcPr = c.Xml.Element(XName.Get("tcPr", DocX.w.NamespaceName));
}
XElement vMerge = tcPr.Element(XName.Get("vMerge", DocX.w.NamespaceName));
if (vMerge == null)
{
tcPr.SetElementValue(XName.Get("vMerge", DocX.w.NamespaceName), string.Empty);
vMerge = tcPr.Element(XName.Get("vMerge", DocX.w.NamespaceName));
}
}
/*
* Get the tcPr (table cell properties) element for the first cell in this merge,
* null will be returned if no such element exists.
*/
XElement start_tcPr = Rows[startRow].Cells[columnIndex].Xml.Element(XName.Get("tcPr", DocX.w.NamespaceName));
if (start_tcPr == null)
{
Rows[startRow].Cells[columnIndex].Xml.SetElementValue(XName.Get("tcPr", DocX.w.NamespaceName), string.Empty);
start_tcPr = Rows[startRow].Cells[columnIndex].Xml.Element(XName.Get("tcPr", DocX.w.NamespaceName));
}
/*
* Get the gridSpan element of this row,
* null will be returned if no such element exists.
*/
XElement start_vMerge = start_tcPr.Element(XName.Get("vMerge", DocX.w.NamespaceName));
if (start_vMerge == null)
{
start_tcPr.SetElementValue(XName.Get("vMerge", DocX.w.NamespaceName), string.Empty);
start_vMerge = start_tcPr.Element(XName.Get("vMerge", DocX.w.NamespaceName));
}
start_vMerge.SetAttributeValue(XName.Get("val", DocX.w.NamespaceName), "restart");
}
/// <summary>
/// Returns a list of all Paragraphs inside this container.
/// </summary>

Loading…
Annulla
Salva