Mostra Nascondi contenuto con segnalibro nel documento di Word
In questo articolo, esploreremo il codice sorgente C# sopra riportato per capire come utilizzare la funzione Mostra Nascondi contenuto con segnalibri nella libreria Aspose.Words per .NET. Questa funzionalità consente di mostrare o nascondere il contenuto di un segnalibro in un documento Word in base a una condizione specifica durante l’unione dei dati.
Prerequisiti
- Conoscenza base del linguaggio C#.
- Ambiente di sviluppo .NET con libreria Aspose.Words installata.
Passaggio 1: ottenere il segnalibro
Noi usiamo ilBookmarks
proprietà dell’intervallo di documenti per ottenere il segnalibro specifico su cui vogliamo mostrare o nascondere il contenuto:
Bookmark bm = doc.Range.Bookmarks[bookmarkName];
Passaggio 2: inserimento dei campi di unione
Usiamo un generatore di documentiDocumentBuilder
per inserire i campi di unione necessari. Questi campi di unione imposteranno una condizione per mostrare o nascondere il contenuto del segnalibro a seconda del valore dishowHide
variabile:
DocumentBuilder builder = new DocumentBuilder(doc);
builder. MoveToDocumentEnd();
Field field = builder. InsertField("IF \"", null);
builder. MoveTo(field. Start. NextSibling);
builder. InsertField("MERGEFIELD " + bookmarkName + "", null);
builder. Write("\" = \"true\" ");
builder. Write("\"");
builder. Write("\"");
builder. Write(" \"\"");
Passaggio 3: spostare il contenuto dei segnalibri
Esaminiamo il contenuto del segnalibro e lo spostiamo in modo che appaia
isse prima del segnalibro. Ciò controllerà la visualizzazione o l’occultamento del contenuto in base alla condizione specificata:
Node currentNode = field. Start;
bool flag = true;
while (currentNode != null && flag)
{
if (currentNode.NodeType == NodeType.Run)
if (currentNode.ToString(SaveFormat.Text).Trim() == "\"")
flag = false;
Node nextNode = currentNode.NextSibling;
bm.BookmarkStart.ParentNode.InsertBefore(currentNode, bm.BookmarkStart);
currentNode = nextNode;
}
Passaggio 4: spostare il resto del contenuto del segnalibro
Spostiamo il resto del contenuto del segnalibro dopo il segnalibro, utilizzando il nodo finale del segnalibro come punto di inserimento:
Node endNode = bm.BookmarkEnd;
flag = true;
while (currentNode != null && flag)
{
if (currentNode.NodeType == NodeType.FieldEnd)
flag = false;
Node nextNode = currentNode.NextSibling;
bm.BookmarkEnd.ParentNode.InsertAfter(currentNode, endNode);
endNode = currentNode;
currentNode = nextNode;
}
Passaggio 5: esecuzione dell’unione
Noi usiamo ilExecute
metodo del documentos
Stampa unioneobject to execute the merge using the bookmark name and the value of the
mostraHide` variabile:
doc. MailMerge. Execute(new[] { bookmarkName }, new object[] { showHide });
Codice sorgente di esempio per Mostra Nascondi contenuto con segnalibri utilizzando Aspose.Words per .NET
Ecco l’esempio completo del codice sorgente per dimostrare come mostrare o nascondere il contenuto dei segnalibri utilizzando Aspose.Words per .NET:
Bookmark bm = doc.Range.Bookmarks[bookmarkName];
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToDocumentEnd();
// {IF "{MERGEFIELD segnalibro}" = "true" "" ""}
Field field = builder.InsertField("IF \"", null);
builder.MoveTo(field.Start.NextSibling);
builder.InsertField("MERGEFIELD " + bookmarkName + "", null);
builder.Write("\" = \"true\" ");
builder.Write("\"");
builder.Write("\"");
builder.Write(" \"\"");
Node currentNode = field.Start;
bool flag = true;
while (currentNode != null && flag)
{
if (currentNode.NodeType == NodeType.Run)
if (currentNode.ToString(SaveFormat.Text).Trim() == "\"")
flag = false;
Node nextNode = currentNode.NextSibling;
bm.BookmarkStart.ParentNode.InsertBefore(currentNode, bm.BookmarkStart);
currentNode = nextNode;
}
Node endNode = bm.BookmarkEnd;
flag = true;
while (currentNode != null && flag)
{
if (currentNode.NodeType == NodeType.FieldEnd)
flag = false;
Node nextNode = currentNode.NextSibling;
bm.BookmarkEnd.ParentNode.InsertAfter(currentNode, endNode);
endNode = currentNode;
currentNode = nextNode;
}
doc.MailMerge.Execute(new[] { bookmarkName }, new object[] { showHide });
Conclusione
In questo articolo, abbiamo esplorato il codice sorgente C# per comprendere come utilizzare la funzionalità Mostra Nascondi contenuto con segnalibri di Aspose.Words per .NET. Abbiamo seguito una guida passo passo per mostrare o nascondere il contenuto di un segnalibro in base a una condizione specifica durante l’unione dei dati.
Domande frequenti su Mostra nascondi contenuto con segnalibri nel documento Word
D: Posso utilizzare la stessa condizione per più segnalibri nello stesso documento?
R: Sì, puoi utilizzare la stessa condizione per più segnalibri nello stesso documento. Basta ripetere i passaggi 2-5 per ciascun segnalibro, modificando il nome del segnalibro e facoltativamente il valore del fileshowhide
variabile secondo necessità.
D: Come posso aggiungere ulteriori condizioni per mostrare o nascondere il contenuto dei segnalibri?
R: Per aggiungere più condizioni, puoi utilizzare operatori logici comeAND
EOR
nel codice per inserire i campi di unione nel passaggio 2. Modifica la condizione nel codice seguente per aggiungere ulteriori condizioni:
builder. Write("\" = \"true\" ");
D: Come posso eliminare un segnalibro in un documento Word utilizzando Aspose.Words per .NET?
R: Per rimuovere un segnalibro in un documento Word utilizzando Aspose.Words per .NET, è possibile utilizzare il fileRemove
metodo daBookmarks
raccolta della gamma di documenti. Ecco un codice di esempio per eliminare un segnalibro specifico:
doc.Range.Bookmarks.Remove(bookmarkName);
D: La libreria Aspose.Words è gratuita?
R: La libreria Aspose.Words è una libreria commerciale e richiede una licenza valida per l’utilizzo nei tuoi progetti. Puoi controllareAspose.Words per riferimenti API .NET per saperne di più sulle opzioni di licenza e sui prezzi.
D: Sono disponibili altre librerie per l’elaborazione di testi con documenti Word in .NET?
R: Sì, sono disponibili altre librerie per l’elaborazione di parole con documenti Word in .NET, come Open XML SDK e GemBox.Document. Puoi esplorare queste librerie come alternative ad Aspose.Words in base alle tue esigenze e preferenze specifiche.