Při generování dokumentů aplikace Word v jazyce Java možná budete muset vytvořit obsah (TOC). Můžete najít různá řešení pro vytváření TOC, ale musíte psát složitý kód a můžete čelit problémům s rozložením. Dovolte mi tedy poskytnout vám jednoduchou a snadno implementovatelnou metodu k vytvoření obsahu v dokumentech aplikace Word v Javě.
Obsah(TOC) ve Word DOC poskytuje přehled o tom, co dokument obsahuje. Kromě toho vám umožňuje přejít do určité části dokumentu. V následujících částech se naučíte krok za krokem metodu vytvoření obsahu v dokumentu aplikace Word. Také uvidíte, jak extrahovat, aktualizovat a odstranit obsah v dokumentu aplikace Word v Javě.
- C# API pro přidání, úpravu nebo odstranění obsahu v dokumentech aplikace Word
- Přidejte obsah do dokumentu aplikace Word
- Extrahujte obsah z dokumentu aplikace Word
- Aktualizace obsahu v dokumentu aplikace Word
- Odebrat obsah v dokumentu aplikace Word
- Získejte bezplatnou licenci API
C# API pro vytváření obsahu v dokumentech aplikace Word
Pro práci s obsahy v dokumentech aplikace Word použijeme Aspose.Words for .NET. Uvedené API je navrženo pro provádění základních i pokročilých funkcí automatizace aplikace Word z aplikací .NET. Kromě toho vám poskytuje dobrou kontrolu nad manipulací s obsahem v dokumentech aplikace Word. API si můžete buď stáhnout, nebo jej nainstalovat pomocí NuGet.
PM> Install-Package Aspose.Words
Jak vytvořit obsah ve Wordu v C#
Následují kroky k vytvoření obsahu v dokumentu aplikace Word v C#.
- Vytvořte instanci třídy Document(v případě načítání existujícího dokumentu aplikace Word zadejte cestu k souboru v konstruktoru).
- Vytvořte instanci třídy DocumentBuilder a inicializujte ji dříve vytvořeným objektem Document.
- Vložte obsah pomocí metody DocumentBuilder.InsertTableOfContents("\\o \"1-3\" \\h \\z \\u").
- Aktualizujte pole pomocí metody Document.UpdateFields().
- Uložte dokument aplikace Word pomocí metody Document.Save(String).
Následující ukázka kódu ukazuje, jak přidat obsah do dokumentu aplikace Word v jazyce C#.
// Úplné příklady a datové soubory najdete na https://github.com/aspose-words/Aspose.Words-for-.NET
// Cesta k adresáři dokumentů.
string dataDir = RunExamples.GetDataDir_WorkingWithDocument();
// Inicializujte dokument.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Na začátek dokumentu vložte obsah.
builder.InsertTableOfContents("\\o \"1-3\" \\h \\z \\u");
// Nově vložený obsah bude zpočátku prázdný.
// Je třeba jej vyplnit aktualizací polí v dokumentu.
doc.UpdateFields();
dataDir = dataDir + "DocumentBuilderInsertTOC_out.doc";
doc.Save(dataDir);
Extrahujte obsah z dokumentu aplikace Word v jazyce C#
Následují kroky k extrahování polí z obsahu v dokumentu aplikace Word.
- Načtěte dokument aplikace Word pomocí třídy Document.
- Procházejte každé Pole v dokumentu pomocí kolekce Document.Range.Fields.
- Zkontrolujte, zda je typ pole hypertextový odkaz pomocí vlastnosti Field.Type.
- Zkontrolujte, zda pole spadá pod část obsahu.
- Získejte informace o poli a vytiskněte je.
Následující ukázka kódu ukazuje, jak extrahovat obsah z dokumentu aplikace Word pomocí jazyka C#.
// Cesta k adresáři dokumentů.
string dataDir = RunExamples.GetDataDir_WorkingWithDocument();
string fileName = "TOC.doc";
Aspose.Words.Document doc = new Aspose.Words.Document(dataDir + fileName);
foreach (Field field in doc.Range.Fields)
{
if (field.Type.Equals(Aspose.Words.Fields.FieldType.FieldHyperlink))
{
FieldHyperlink hyperlink = (FieldHyperlink)field;
if (hyperlink.SubAddress != null && hyperlink.SubAddress.StartsWith("_Toc"))
{
Paragraph tocItem = (Paragraph)field.Start.GetAncestor(NodeType.Paragraph);
Console.WriteLine(tocItem.ToString(SaveFormat.Text).Trim());
Console.WriteLine("------------------");
if (tocItem != null)
{
Bookmark bm = doc.Range.Bookmarks[hyperlink.SubAddress];
// Získejte umístění, na které ukazuje tato položka TOC
Paragraph pointer = (Paragraph)bm.BookmarkStart.GetAncestor(NodeType.Paragraph);
Console.WriteLine(pointer.ToString(SaveFormat.Text));
}
} // End If
}// End If
}// End Foreach
C# Aktualizace obsahu v dokumentu aplikace Word
Kdykoli připojíte nějaký obsah k dokumentu aplikace Word, musíte aktualizovat obsah. Chcete-li to provést programově, stačí před uložením dokumentu zavolat metodu Document.UpdateFields().
Odebrat obsah v dokumentu aplikace Word
Aspose.Words for .NET také umožňuje odstranit obsah z dokumentu aplikace Word. Následují kroky k provedení této operace.
- Nejprve načtěte dokument aplikace Word pomocí třídy Document.
- Získejte a uložte FieldStart uzlů každého TOC do pole.
- Procházejte uzly, dokud nezískáte uzel typu FieldEnd(konec obsahu).
- Odstraňte uzly pomocí metody Node.Remove() a uložte aktualizovaný dokument.
Následující ukázka kódu ukazuje, jak odebrat obsah z dokumentu aplikace Word v jazyce C#.
// Úplné příklady a datové soubory najdete na https://github.com/aspose-words/Aspose.Words-for-.NET
public static void Run()
{
// Cesta k adresáři dokumentů.
string dataDir = RunExamples.GetDataDir_WorkingWithStyles();
// Otevřete dokument, který obsahuje TOC.
Document doc = new Document(dataDir + "Document.TableOfContents.doc");
// Odeberte z dokumentu první obsah.
RemoveTableOfContents(doc, 0);
dataDir = dataDir + "Document.TableOfContentsRemoveToc_out.doc";
// Uložte výstup.
doc.Save(dataDir);
Console.WriteLine("\nSpecified TOC from a document removed successfully.\nFile saved at " + dataDir);
}
///<summary>
/// Odebere z dokumentu zadané pole obsahu.
///</summary>
///<param name="doc"> Dokument, ze kterého se má pole odebrat.</param>
///<param name="index"> Index TOC, který se má odstranit, založený na nule.</param>
public static void RemoveTableOfContents(Document doc, int index)
{
// Uložte uzly FieldStart polí obsahu v dokumentu pro rychlý přístup.
ArrayList fieldStarts = new ArrayList();
// Toto je seznam pro uložení uzlů nalezených uvnitř zadaného obsahu. Budou odstraněny
// Na konci této metody.
ArrayList nodeList = new ArrayList();
foreach (FieldStart start in doc.GetChildNodes(NodeType.FieldStart, true))
{
if (start.FieldType == FieldType.FieldTOC)
{
// Přidejte všechny FieldStarty, které jsou typu FieldTOC.
fieldStarts.Add(start);
}
}
// Ujistěte se, že TOC určený předaným indexem existuje.
if (index > fieldStarts.Count - 1)
throw new ArgumentOutOfRangeException("TOC index is out of range");
bool isRemoving = true;
// Získejte FieldStart zadaného obsahu.
Node currentNode = (Node)fieldStarts[index];
while (isRemoving)
{
// Je bezpečnější tyto uzly uložit a později je všechny najednou smazat.
nodeList.Add(currentNode);
currentNode = currentNode.NextPreOrder(doc);
// Jakmile narazíme na uzel FieldEnd typu FieldTOC, pak víme, že jsme na konci
// Z aktuálního TOC a tady se můžeme zastavit.
if (currentNode.NodeType == NodeType.FieldEnd)
{
FieldEnd fieldEnd = (FieldEnd)currentNode;
if (fieldEnd.FieldType == FieldType.FieldTOC)
isRemoving = false;
}
}
// Odeberte všechny uzly nalezené v zadaném obsahu.
foreach (Node node in nodeList)
{
node.Remove();
}
}
Vytvořte obsah pomocí bezplatné licence
Můžete získat bezplatnou dočasnou licenci a vytvořit obsah v dokumentech aplikace Word bez omezení hodnocení.
Závěr
V tomto článku jste se naučili, jak programově pracovat s obsahem v dokumentu aplikace Word. Podrobný průvodce a ukázky kódu ukázaly, jak přidat, aktualizovat, extrahovat a odstranit obsah z dokumentů aplikace Word v C#.
C# Word Processing API – Prozkoumejte více
Další informace o automatizačním rozhraní C# Word můžete prozkoumat pomocí dokumentace. V případě jakýchkoli dotazů nebo obav nás kontaktujte prostřednictvím našeho fóra.