Dans le cadre de mon travail, je dois modifier l'entête d'environ 1000 fichiers Word. La manipulation n'est pas compliqué puisqu'il s'agit de rajouter "#A" à chaque référence dans l'entête de chacun de mes fichiers.
Je travaille en C# avec OpenXML. Malgré les nombreuses docs sur internet, je n'arrive pas à récupérer le contenu du Header d'un fichier Word.
Dans l'idéal pour le moment, j'aimerai afficher tout le contenu de mon header dans la console.
Actuellement, j'ai le code suivant, mais il est possible qu'il ne réponde pas au besoin.
static void Main(string[] args)
{
//Chemin vers le fichier word
String filepath = @"MON_CHEMIN";
using (WordprocessingDocument myDocX =
WordprocessingDocument.Open(filepath, true))
{
DocumentFormat.OpenXml.Packaging.HeaderPart firstHeader =
myDocX.MainDocumentPart.HeaderParts.FirstOrDefault();
myDocX.MainDocumentPart.HeaderParts.FirstOrDefault();
if (firstHeader != null)
{
//Je veux afficher ici le contenu de mon header
Console.WriteLine(firstHeader.ToString());
}
}
//Pour éviter que la console se ferme...
Console.ReadLine();
}
Merci par avance pour vos réponses.
- Edité par Malecto 22 octobre 2018 à 10:55:10
Un programme est un sort jeté sur un ordinateur, qui transforme tout texte saisi au clavier en message d’erreur.
Oui, c'était bien au bon endroit. En testant plusieurs fois, j'ai trouvé la solution. Je n'affiche pas le contenu dans la console mais j'arrive à modifier mon entête comme je veux, ce qui était l'objectif final.
Voici la solution :
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace ModifEnteteDocX
{
class Program
{
static void Main(string[] args)
{
//Chemin vers le fichier word
String filepath = @"MON_CHEMIN";
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(filepath, true))
{
string docText = null;
DocumentFormat.OpenXml.Packaging.HeaderPart headerPart =
wordDoc.MainDocumentPart.HeaderParts.FirstOrDefault();
using (StreamReader sr = new StreamReader(headerPart.GetStream()))
{
docText = sr.ReadToEnd();
}
Regex regexText = new Regex("Chaine_a_transformer");
docText = regexText.Replace(docText, "Ce_qui_va_remplacer");
using (StreamWriter sw = new StreamWriter(headerPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
}
}
}
}
Un programme est un sort jeté sur un ordinateur, qui transforme tout texte saisi au clavier en message d’erreur.
Accès au Header d'un Word avec OpenXML
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.