SdtType

SdtType enumeration

Specifica il tipo di nodo tag di documento strutturato (SDT).

public enum SdtType

I valori

NomeValoreDescrizione
None0Nessun tipo è assegnato all’SDT.
Bibliography1L’SDT rappresenta una voce bibliografica.
Citation2L’SDT rappresenta una citazione.
Equation3L’SDT rappresenta un’equazione.
DropDownList4L’SDT rappresenta un elenco a discesa quando viene visualizzato nel documento.
ComboBox5L’SDT rappresenta una casella combinata quando viene visualizzato nel documento.
Date6L’SDT rappresenta un selettore di data quando viene visualizzato nel documento.
BuildingBlockGallery7L’SDT rappresenta un tipo di galleria di blocchi costitutivi.
DocPartObj8L’SDT rappresenta un tipo di parte del documento.
Group9L’SDT rappresenta un raggruppamento limitato quando visualizzato nel documento.
Picture10L’SDT rappresenta un’immagine quando viene visualizzata nel documento.
RichText11L’SDT rappresenta una casella di testo avanzata quando viene visualizzata nel documento.
PlainText12L’SDT rappresenta una casella di testo normale quando viene visualizzato nel documento.
Checkbox13L’SDT rappresenta una casella di controllo quando viene visualizzato nel documento.
RepeatingSection14L’SDT rappresenta il tipo di sezione ripetuta quando viene visualizzato nel documento.
RepeatingSectionItem15L’SDT rappresenta l’elemento di sezione ripetuto.
EntityPicker16L’SDT rappresenta un selettore di entità che consente all’utente di selezionare un’istanza di un tipo di contenuto esterno.

Esempi

Mostra come creare un tag di documento strutturato di tipo Citazione.

Document doc = new Document();

StructuredDocumentTag sdt = new StructuredDocumentTag(doc, SdtType.Citation, MarkupLevel.Inline);
Paragraph paragraph = doc.FirstSection.Body.FirstParagraph;
paragraph.AppendChild(sdt);

// Crea un campo Citazione.
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToParagraph(0, -1);
builder.InsertField(@"CITATION Ath22 \l 1033 ", "(John Lennon, 2022)");

// Sposta il campo nel tag del documento strutturato.
while (sdt.NextSibling != null)
    sdt.AppendChild(sdt.NextSibling);

doc.Save(ArtifactsDir + "StructuredDocumentTag.Citation.docx");

Mostra come creare un tag di documento strutturato di gruppo a livello di riga.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Table table = builder.StartTable();

// Crea un tag di documento strutturato Gruppo a livello di riga.
StructuredDocumentTag groupSdt = new StructuredDocumentTag(doc, SdtType.Group, MarkupLevel.Row);
table.AppendChild(groupSdt);
groupSdt.IsShowingPlaceholderText = false;
groupSdt.RemoveAllChildren();

// Crea una riga figlia del tag del documento strutturato.
Row row = new Row(doc);
groupSdt.AppendChild(row);

Cell cell = new Cell(doc);
row.AppendChild(cell);

builder.EndTable();

// Inserisci il contenuto della cella.
cell.EnsureMinimum();
builder.MoveTo(cell.LastParagraph);
builder.Write("Lorem ipsum dolor.");

// Inserisci il testo dopo la tabella.
builder.MoveTo(table.NextSibling);
builder.Write("Nulla blandit nisi.");

doc.Save(ArtifactsDir + "StructuredDocumentTag.SdtAtRowLevel.docx");

Mostra come lavorare con gli stili per gli elementi di controllo del contenuto.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Di seguito sono riportati due modi per applicare uno stile dal documento a un tag di documento strutturato.
// 1 - Applica un oggetto stile dalla raccolta stili del documento:
Style quoteStyle = doc.Styles[StyleIdentifier.Quote];
StructuredDocumentTag sdtPlainText =
    new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Inline) { Style = quoteStyle };

// 2 - Riferimento a uno stile nel documento tramite il nome:
StructuredDocumentTag sdtRichText =
    new StructuredDocumentTag(doc, SdtType.RichText, MarkupLevel.Inline) { StyleName = "Quote" };

builder.InsertNode(sdtPlainText);
builder.InsertNode(sdtRichText);

Assert.AreEqual(NodeType.StructuredDocumentTag, sdtPlainText.NodeType);

NodeCollection tags = doc.GetChildNodes(NodeType.StructuredDocumentTag, true);

foreach (Node node in tags)
{
    StructuredDocumentTag sdt = (StructuredDocumentTag)node;

    Console.WriteLine(sdt.WordOpenXMLMinimal);

    Assert.AreEqual(StyleIdentifier.Quote, sdt.Style.StyleIdentifier);
    Assert.AreEqual("Quote", sdt.StyleName);
}

Mostra come riempire una tabella con dati provenienti da una parte XML.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

CustomXmlPart xmlPart = doc.CustomXmlParts.Add("Books",
    "<books>" +
        "<book>" +
            "<title>Everyday Italian</title>" +
            "<author>Giada De Laurentiis</author>" +
        "</book>" +
        "<book>" +
            "<title>The C Programming Language</title>" +
            "<author>Brian W. Kernighan, Dennis M. Ritchie</author>" +
        "</book>" +
        "<book>" +
            "<title>Learning XML</title>" +
            "<author>Erik T. Ray</author>" +
        "</book>" +
    "</books>");

// Crea intestazioni per i dati dal contenuto XML.
Table table = builder.StartTable();
builder.InsertCell();
builder.Write("Title");
builder.InsertCell();
builder.Write("Author");
builder.EndRow();
builder.EndTable();

// Crea una tabella con una sezione ripetuta al suo interno.
StructuredDocumentTag repeatingSectionSdt =
    new StructuredDocumentTag(doc, SdtType.RepeatingSection, MarkupLevel.Row);
repeatingSectionSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book", string.Empty);
table.AppendChild(repeatingSectionSdt);

// Aggiungere l'elemento della sezione ripetuta all'interno della sezione ripetuta e contrassegnarlo come riga.
// Questa tabella avrà una riga per ogni elemento che possiamo trovare nel documento XML
// utilizzando l'XPath "/books[1]/book", di cui ce ne sono tre.
StructuredDocumentTag repeatingSectionItemSdt =
    new StructuredDocumentTag(doc, SdtType.RepeatingSectionItem, MarkupLevel.Row);
repeatingSectionSdt.AppendChild(repeatingSectionItemSdt);

Row row = new Row(doc);
repeatingSectionItemSdt.AppendChild(row);

// Mappa i dati XML con le celle della tabella create per il titolo e l'autore di ciascun libro.
StructuredDocumentTag titleSdt =
    new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Cell);
titleSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book[1]/title[1]", string.Empty);
row.AppendChild(titleSdt);

StructuredDocumentTag authorSdt =
    new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Cell);
authorSdt.XmlMapping.SetMapping(xmlPart, "/books[1]/book[1]/author[1]", string.Empty);
row.AppendChild(authorSdt);

doc.Save(ArtifactsDir + "StructuredDocumentTag.RepeatingSectionItem.docx");

Guarda anche