1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| private void button1_Click(object sender, EventArgs e)
{
docWord = @"monFichier.docx";
//overture du package en lecture/écriture
Package officePackage = Package.Open(docWord, FileMode.Open, FileAccess.ReadWrite);
MessageBox.Show("Fichier chargé avec succès", "Réussi", MessageBoxButtons.OK);
//mettre ici le code des traitements
//type de contenu pour la partie principale
const String officeDocRelType = @"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument";
PackagePart corePart = null;
Uri documentUri = null;
//on récupère la partie contenant les propriétés
foreach (PackageRelationship relationship in officePackage.GetRelationshipsByType(officeDocRelType))
{
// Il n'y a qu'une seule partie de type partType dans le package
documentUri = PackUriHelper.ResolvePartUri(new Uri("/", UriKind.Relative), relationship.TargetUri);
corePart = officePackage.GetPart(documentUri);
break;
}
if (corePart != null)
{
string cpPropertiesSchema = "http://schemas.openxmlformats.org/package/2006/metadata/core-properties";
string dcPropertiesSchema = "http://purl.org/dc/elements/1.1/";
string dcTermsPropertiesSchema = "http://purl.org/dc/terms/";
//construction d'un XmlNamespaceManager contenant les namespaces utilisés
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("dc", dcPropertiesSchema);
nsmgr.AddNamespace("cp", cpPropertiesSchema);
nsmgr.AddNamespace("dcterms", dcTermsPropertiesSchema);
//chargement de la partie dans un XmlDocument
XmlDocument doc = new XmlDocument(nt);
doc.Load(corePart.GetStream());
XmlNode nodeAuteur = doc.DocumentElement.SelectSingleNode("//dc:creator", nsmgr);
if (nodeAuteur != null)
labelAuteur.Text = nodeAuteur.InnerText;
XmlNode nodeTitre = doc.DocumentElement.SelectSingleNode("//dc:title", nsmgr);
if (nodeTitre != null)
labelTitre.Text = nodeTitre.InnerText;
XmlNode nodeMotsClefs = doc.DocumentElement.SelectSingleNode("//cp:keywords", nsmgr);
if (nodeMotsClefs != null)
labelMotsClefs.Text = nodeMotsClefs.InnerText;
XmlNode nodeDate = doc.DocumentElement.SelectSingleNode("//dcterms:created", nsmgr);
if (nodeDate != null)
labelDate.Text = DateTime.Parse(nodeDate.InnerText).ToShortDateString();
}
//On ferme le package pour éviter un rechargement par erreur
officePackage.Close();
} |
Partager