Pour illustrer la façon dont cela peut être fait, je viens de créer une application console C# sur .NET 4.5 et une partie de Microsoft Office 2013 des objets COM.
using System;
using Microsoft.Office.Interop.Word;
namespace WordDocStats{classProgram{//Based on: http://www.dotnetperls.com/wordstaticvoidMain(string[] args){//Open a doc file.var application =newApplication();var document = application.Documents.Open(@"C:\Users\MyName\Documents\word.docx");//Get the page count.var numberOfPages = document.ComputeStatistics(WdStatistic.wdStatisticPages,false);//Print out the result.Console.WriteLine(String.Format("Total number of pages in document: {0}", numberOfPages));//Close word.
application.Quit();}}}
Pour que cela fonctionne, vous avez besoin de faire référence à la suite des objets COM:
Bibliothèque d'Objets Microsoft Office (version 15.0 dans mon cas)
Bibliothèque d'Objets Microsoft Word (version 15.0 dans mon cas)
Les deux objets COM vous donne accès à des espaces de noms nécessaires.
Comme on le voit dans la documentation, la méthode prend un WdStatistic enum qui vous permet de récupérer différents types de stats, par exemple, le montant total de pages. Pour un aperçu de la gamme complète de stats, vous avez accès, veuillez vous référer à la documentation de la WdStatistic enum, qui peut être trouvé ici: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.wdstatistic.aspx
à utiliser DocumentFormat.OpenXml.De l'emballage.WordprocessingDocument classe, vous devez ajouter les références suivantes dans votre projet
DocumentFormat.OpenXml.dll &
Windowsbase.dll
J'ai écrit le code suivant pour effectuer la mission dans une application windows, mais j'ai des erreurs: Pouvez-vous me donner le détail de l'erreur ? parce que dans Mon PC, Il fonctionne. Il fonctionne avec .les fichiers doc?? ou tout simplement avec .docx(basé sur openxml)? Je crois qu'il va travailler avec seulement docx. c'est une bonne solution si vous ne voulez pas avoir de MS Office (Dll) installé sur votre serveur
Solution moderne (basé sur Jignesh Thakker réponse): SDK Open XML n'est plus là, mais il est publié sur Github et même support .NET de Base. Vous n'avez pas besoin de MS Office sur le serveur/machine.
using DocumentFormat.OpenXml.Packaging;privateintCountWordPage(string filePath){
using (var wordDocument =WordprocessingDocument.Open(filePath,false)){returnint.Parse(wordDocument.ExtendedFilePropertiesPart.Properties.Pages.Text);}}
Pour illustrer la façon dont cela peut être fait, je viens de créer une application console C# sur .NET 4.5 et une partie de Microsoft Office 2013 des objets COM.
Pour que cela fonctionne, vous avez besoin de faire référence à la suite des objets COM:
Les deux objets COM vous donne accès à des espaces de noms nécessaires.
Pour plus de détails sur la façon de référencer le bon assemblées, veuillez vous référer à la section: "3. La configuration de l'Environnement de Travail:" à: http://www.c-sharpcorner.com/UploadFile/amrish_deep/WordAutomation05102007223934PM/WordAutomation.aspx
Pour un rapide et plus générale introduction à l'automatisation de Word par C#, voir: http://www.dotnetperls.com/word
-- Mise à JOUR
De la Documentation sur la méthode
Document.ComputeStatistics
qui vous donne accès au nombre de pages peut être trouvé ici: http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.computestatistics.aspxComme on le voit dans la documentation, la méthode prend un
WdStatistic
enum qui vous permet de récupérer différents types de stats, par exemple, le montant total de pages. Pour un aperçu de la gamme complète de stats, vous avez accès, veuillez vous référer à la documentation de laWdStatistic
enum, qui peut être trouvé ici: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.wdstatistic.aspxOriginalL'auteur Lasse Christiansen
utilisation DocumentFormat.OpenXml.dll vous pouvez trouver les dll dans C:\Program Files\SDK Open XML\V2.0\lib
Exemple de code:
à utiliser DocumentFormat.OpenXml.De l'emballage.WordprocessingDocument classe, vous devez ajouter les références suivantes dans votre projet
DocumentFormat.OpenXml.dll &
Windowsbase.dll
Pouvez-vous me donner le détail de l'erreur ? parce que dans Mon PC, Il fonctionne.
Il fonctionne avec .les fichiers doc?? ou tout simplement avec .docx(basé sur openxml)?
Je crois qu'il va travailler avec seulement docx.
c'est une bonne solution si vous ne voulez pas avoir de MS Office (Dll) installé sur votre serveur
OriginalL'auteur Jignesh Thakker
Solution moderne (basé sur Jignesh Thakker réponse): SDK Open XML n'est plus là, mais il est publié sur Github et même support .NET de Base. Vous n'avez pas besoin de MS Office sur le serveur/machine.
Installer le Package Nuget:
Le code:
OriginalL'auteur Luke Vo