3 bibliothèques Word en C# (Liste mise à jour pour les développeurs)
Les documents Microsoft Word contiennent souvent une mise en forme riche, notamment des polices, des styles et divers éléments qui les rendent visuellement attrayants. IronWord est une bibliothèque puissante d' Iron Software dotée d'une API intuitive pour les documents Word et Docx en C# et VB.NET. Il n'est pas nécessaire d'installer Microsoft Office ou Word Interop pour créer, modifier et exporter des documents Word. IronWord prend entièrement en charge .NET 8, 7, 6, Framework, Core et Azure. Cela signifie que la bibliothèque ne nécessite pas l'installation de Word sur l'ordinateur et lit les fichiers indépendamment. Si vous travaillez avec C# et que vous avez besoin de lire des documents Word tout en préservant leur mise en forme, ce tutoriel vous guidera tout au long du processus en utilisant la bibliothèque IronWord .
Comment (en C#) Lire un Document Word avec Formatage
- Installez la bibliothèque IronWord pour lire les documents Word.
- Chargez 'sample.docx', le document Word d'entrée en utilisant la classe
WordDocumentde la bibliothèque IronWord. - Lisez les paragraphes avec la mise en forme en utilisant un document Word chargé.
- Afficher les données extraites avec les informations de format dans la sortie de la console.
Prérequis
- Visual Studio : Assurez-vous d'avoir Visual Studio ou tout autre environnement de développement C# installé.
- Gestionnaire de packages NuGet : assurez-vous de pouvoir utiliser NuGet pour gérer les packages de votre projet.
Étape 1 : Créer un nouveau projet C#
Créez une nouvelle application console C# ou utilisez un projet existant où vous souhaitez lire des documents Word.
Sélectionnez le modèle d'application console et cliquez sur Suivant.

Cliquez sur le bouton " Suivant " pour indiquer le nom de la solution, le nom du projet et le chemin d'accès au code.

Sélectionnez ensuite la version .NET souhaitée. Il est toujours préférable de choisir la dernière version disponible, mais si votre projet a des exigences spécifiques, utilisez la version .NET nécessaire.

Étape 2 : Installer la bibliothèque IronWord
Ouvrez votre projet C# et installez la bibliothèque IronWord à l'aide de la console du gestionnaire de packages NuGet :
Le package NuGet peut également être installé en utilisant le Gestionnaire de packages NuGet de Visual Studio, comme indiqué ci-dessous.

Étape 3 : Lire le document Word avec mise en forme
Pour lire un fichier Word, il faut d'abord créer un nouveau document, puis y ajouter du contenu comme ci-dessous.

Enregistrez maintenant le fichier dans le répertoire du projet et modifiez ses propriétés pour le copier dans le répertoire de sortie.

Ajoutez maintenant l'extrait de code ci-dessous au fichier program.cs :
using IronWord;
class Program
{
static void Main()
{
try
{
// Load existing docx
var sampleDoc = new WordDocument("sample.docx");
var paragraphs = sampleDoc.Paragraphs;
// Iterate through each paragraph in the Word document
foreach (var paragraph in paragraphs)
{
var textRun = paragraph.FirstTextRun;
var text = textRun.Text; // Read text content
// Extract Formatting details if available
if (textRun.Style != null)
{
var fontSize = textRun.Style.FontSize; // Font size
var isBold = textRun.Style.IsBold;
Console.WriteLine($"\tText: {text}, FontSize: {fontSize}, Bold: {isBold}");
}
else
{
// Print text without formatting details
Console.WriteLine($"\tText: {text}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
}Imports Microsoft.VisualBasic
Imports IronWord
Friend Class Program
Shared Sub Main()
Try
' Load existing docx
Dim sampleDoc = New WordDocument("sample.docx")
Dim paragraphs = sampleDoc.Paragraphs
' Iterate through each paragraph in the Word document
For Each paragraph In paragraphs
Dim textRun = paragraph.FirstTextRun
Dim text = textRun.Text ' Read text content
' Extract Formatting details if available
If textRun.Style IsNot Nothing Then
Dim fontSize = textRun.Style.FontSize ' Font size
Dim isBold = textRun.Style.IsBold
Console.WriteLine($vbTab & "Text: {text}, FontSize: {fontSize}, Bold: {isBold}")
Else
' Print text without formatting details
Console.WriteLine($vbTab & "Text: {text}")
End If
Next paragraph
Catch ex As Exception
Console.WriteLine($"An error occurred: {ex.Message}")
End Try
End Sub
End ClassLe code ci-dessus lit le document Word en utilisant la méthode de constructeur de la classe WordDocument de la bibliothèque IronWord.
Sortie

Explication
- Ouvrez le document Word : Chargez le document Word en utilisant
WordDocumentde IronWord. - Parcourir les paragraphes et les séquences : Utilisez des boucles imbriquées pour parcourir les paragraphes et les séquences. Les séquences représentent des portions de texte avec une mise en forme spécifique.
- Extraction du texte et de la mise en forme : extraire le contenu textuel de chaque exécution et vérifier les propriétés de mise en forme. Dans cet exemple, nous avons démontré comment extraire la taille de la police et la mise en forme en gras.
- Gestion des exceptions : Un bloc try-and-catch est utilisé pour gérer les exceptions et les afficher.
Le fichier chargé peut être utilisé pour imprimer des documents ; nous pouvons également modifier la couleur de la police dans l'objet style.
Lire des tableaux à partir de fichiers Word
Nous pouvons également lire les tableaux des documents Word. Ajoutez l'extrait de code ci-dessous au programme.
using IronWord;
class Program
{
static void Main()
{
try
{
// Load existing docx
var sampleDoc = new WordDocument("sample.docx");
// Read Tables
var tables = sampleDoc.Tables;
foreach (var table in tables)
{
var rows = table.Rows;
foreach (var row in rows)
{
foreach (var cell in row.Cells)
{
var contents = cell.Contents;
contents.ForEach(x => Console.WriteLine(x));
// Print cell contents
}
}
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
}Imports IronWord
Friend Class Program
Shared Sub Main()
Try
' Load existing docx
Dim sampleDoc = New WordDocument("sample.docx")
' Read Tables
Dim tables = sampleDoc.Tables
For Each table In tables
Dim rows = table.Rows
For Each row In rows
For Each cell In row.Cells
Dim contents = cell.Contents
contents.ForEach(Sub(x) Console.WriteLine(x))
' Print cell contents
Next cell
Next row
Next table
Catch ex As Exception
Console.WriteLine($"An error occurred: {ex.Message}")
End Try
End Sub
End ClassIci, nous utilisons la propriété Tables sur la classe WordDocument pour récupérer tous les tableaux dans le document, puis nous les parcourons pour imprimer le contenu.
Ajouter du style au texte existant
Nous pouvons ajouter de nouvelles informations de style à un document Word existant à l'aide de la bibliothèque IronWord, comme le montre l'extrait de code ci-dessous.
using IronWord;
using IronWord.Models;
class Program
{
static void Main()
{
try
{
// Load existing docx
var sampleDoc = new WordDocument("sample.docx");
var paragraphs = sampleDoc.Paragraphs;
// Iterate through paragraphs
foreach (var paragraph in paragraphs)
{
var textRun = paragraph.FirstTextRun;
var text = textRun.Text; // Read text content
// Extract Formatting details if available
if (textRun.Style != null)
{
var fontSize = textRun.Style.FontSize; // Font size
var isBold = textRun.Style.IsBold;
Console.WriteLine($"\tText: {text}, FontSize: {fontSize}, Bold: {isBold}");
}
else
{
// Print text without formatting details
Console.WriteLine($"\tText: {text}");
}
}
// Change the formatting of the text
var style = new TextStyle()
{
FontFamily = "Caveat",
FontSize = 72,
TextColor = new IronColor(System.Drawing.Color.Blue), // Blue color
IsBold = true,
IsItalic = true,
IsUnderline = true,
IsSuperscript = false,
IsStrikethrough = true,
IsSubscript = false
};
paragraphs[1].FirstTextRun.Style = style;
// Save the document with the new style applied
sampleDoc.SaveAs("sample2.docx");
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
}Imports Microsoft.VisualBasic
Imports IronWord
Imports IronWord.Models
Friend Class Program
Shared Sub Main()
Try
' Load existing docx
Dim sampleDoc = New WordDocument("sample.docx")
Dim paragraphs = sampleDoc.Paragraphs
' Iterate through paragraphs
For Each paragraph In paragraphs
Dim textRun = paragraph.FirstTextRun
Dim text = textRun.Text ' Read text content
' Extract Formatting details if available
If textRun.Style IsNot Nothing Then
Dim fontSize = textRun.Style.FontSize ' Font size
Dim isBold = textRun.Style.IsBold
Console.WriteLine($vbTab & "Text: {text}, FontSize: {fontSize}, Bold: {isBold}")
Else
' Print text without formatting details
Console.WriteLine($vbTab & "Text: {text}")
End If
Next paragraph
' Change the formatting of the text
Dim style = New TextStyle() With {
.FontFamily = "Caveat",
.FontSize = 72,
.TextColor = New IronColor(System.Drawing.Color.Blue),
.IsBold = True,
.IsItalic = True,
.IsUnderline = True,
.IsSuperscript = False,
.IsStrikethrough = True,
.IsSubscript = False
}
paragraphs(1).FirstTextRun.Style = style
' Save the document with the new style applied
sampleDoc.SaveAs("sample2.docx")
Catch ex As Exception
Console.WriteLine($"An error occurred: {ex.Message}")
End Try
End Sub
End ClassIci, nous créons un TextStyle et l'ajoutons à l'objet paragraphe existant.
Ajout de contenu stylisé au document Word
Nous pouvons ajouter du nouveau contenu à un document Word chargé, comme le montre l'extrait de code ci-dessous.
using IronWord;
using IronWord.Models;
class Program
{
static void Main()
{
try
{
// Load Word Document
var sampleDoc = new WordDocument("sample.docx");
var paragraphs = sampleDoc.Paragraphs;
// Iterate through paragraphs
foreach (var paragraph in paragraphs)
{
var textRun = paragraph.FirstTextRun;
var text = textRun.Text; // Read text content
// Extract the formatting details if available
if (textRun.Style != null)
{
var fontSize = textRun.Style.FontSize; // Font size
var isBold = textRun.Style.IsBold;
Console.WriteLine($"\tText: {text}, FontSize: {fontSize}, Bold: {isBold}");
}
else
{
// Print text without formatting details
Console.WriteLine($"\tText: {text}");
}
}
// Add TextRun with Style to Paragraph
TextRun blueTextRun = new TextRun();
blueTextRun.Text = "Add text using IronWord";
blueTextRun.Style = new TextStyle()
{
FontFamily = "Caveat",
FontSize = 72,
TextColor = new IronColor(System.Drawing.Color.Blue), // Blue color
IsBold = true,
IsItalic = true,
IsUnderline = true,
IsSuperscript = false,
IsStrikethrough = true,
IsSubscript = false
};
paragraphs[1].AddTextRun(blueTextRun);
// Add New Content to the Word file and save
Paragraph newParagraph = new Paragraph();
TextRun newTextRun = new TextRun("New Add Information");
newParagraph.AddTextRun(newTextRun);
// Configure the text with different styles
TextRun introText = new TextRun("This is an example paragraph with italic and bold styling.");
TextStyle italicStyle = new TextStyle()
{
IsItalic = true
};
TextRun italicText = new TextRun("Italic example sentence.", italicStyle);
TextStyle boldStyle = new TextStyle()
{
IsBold = true
};
TextRun boldText = new TextRun("Bold example sentence.", boldStyle);
// Add the styled text to the paragraph
newParagraph.AddTextRun(introText);
newParagraph.AddTextRun(italicText);
newParagraph.AddTextRun(boldText);
// Save the modified document
sampleDoc.SaveAs("sample2.docx");
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
}Imports Microsoft.VisualBasic
Imports IronWord
Imports IronWord.Models
Friend Class Program
Shared Sub Main()
Try
' Load Word Document
Dim sampleDoc = New WordDocument("sample.docx")
Dim paragraphs = sampleDoc.Paragraphs
' Iterate through paragraphs
For Each paragraph In paragraphs
Dim textRun = paragraph.FirstTextRun
Dim text = textRun.Text ' Read text content
' Extract the formatting details if available
If textRun.Style IsNot Nothing Then
Dim fontSize = textRun.Style.FontSize ' Font size
Dim isBold = textRun.Style.IsBold
Console.WriteLine($vbTab & "Text: {text}, FontSize: {fontSize}, Bold: {isBold}")
Else
' Print text without formatting details
Console.WriteLine($vbTab & "Text: {text}")
End If
Next paragraph
' Add TextRun with Style to Paragraph
Dim blueTextRun As New TextRun()
blueTextRun.Text = "Add text using IronWord"
blueTextRun.Style = New TextStyle() With {
.FontFamily = "Caveat",
.FontSize = 72,
.TextColor = New IronColor(System.Drawing.Color.Blue),
.IsBold = True,
.IsItalic = True,
.IsUnderline = True,
.IsSuperscript = False,
.IsStrikethrough = True,
.IsSubscript = False
}
paragraphs(1).AddTextRun(blueTextRun)
' Add New Content to the Word file and save
Dim newParagraph As New Paragraph()
Dim newTextRun As New TextRun("New Add Information")
newParagraph.AddTextRun(newTextRun)
' Configure the text with different styles
Dim introText As New TextRun("This is an example paragraph with italic and bold styling.")
Dim italicStyle As New TextStyle() With {.IsItalic = True}
Dim italicText As New TextRun("Italic example sentence.", italicStyle)
Dim boldStyle As New TextStyle() With {.IsBold = True}
Dim boldText As New TextRun("Bold example sentence.", boldStyle)
' Add the styled text to the paragraph
newParagraph.AddTextRun(introText)
newParagraph.AddTextRun(italicText)
newParagraph.AddTextRun(boldText)
' Save the modified document
sampleDoc.SaveAs("sample2.docx")
Catch ex As Exception
Console.WriteLine($"An error occurred: {ex.Message}")
End Try
End Sub
End ClassIci, nous créons de nouveaux objets TextRun et Paragraph avec des informations de style et les ajoutons au document Word chargé.
Licence (Essai Gratuit Disponible)
Obtenez votre clé de licence d'essai gratuite IronWord . Cette clé doit être placée dans appsettings.json.
{
"IronWord.LicenseKey": "IRONWORD.MYLICENSE.KEY.TRIAL"
}
Fournissez votre email pour obtenir une licence d'essai. Après avoir soumis votre adresse électronique, la clé vous sera envoyée par courriel.

Conclusion
IronWord offre une méthode pratique pour lire des documents Word mis en forme en C#. Étendez le code fourni en fonction de vos besoins spécifiques et de la complexité des documents que vous utilisez. Ce tutoriel constitue un point de départ pour l'intégration d'IronWord dans vos applications C# pour le traitement des documents Word.

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.
Articles connexes
