2011-04-28 11 views
6

में क्रमबद्ध रूप से गिनती है, मुझे अक्षर और/या शब्दों और/या पैराग्राफ को प्रोग्रामेटिक रूप से गिनने की आवश्यकता है जिन्हें DOCX दस्तावेज़ में एक विशिष्ट ज्ञात शैली लागू किया गया है।प्रोग्रामेटिक रूप से किसी दस्तावेज़ शैली/शब्दों/अनुच्छेदों की संख्या को किसी DOCX दस्तावेज़

मुझे यह जानने की जरूरत है 1) यदि यह संभव है और 2) इस संकेत को हल करने के लिए मैं कहां से शुरू कर सकता हूं।

मैं डोम नेविगेशन, XPath/XQuery से परिचित हूं, और जब तक मैं इस समस्या को हल कर सकता हूं तब तक नेट, PHP या जावा या किसी अन्य उपकरण का उपयोग कर सकता हूं।

+1

मुझे लगता है कि यह कुछ OLE स्वचालन (C# या VB.NET में लिखा) के साथ काफी आसानी से किया जा सकता है, मैं वास्तव में लगता है कि यह सिर्फ डॉक्स पढ़ने और परीक्षण और त्रुटि को देखते हुए (यह हमेशा कि तरह है की बात है एमएस ओएलई स्वचालन के साथ)। मैं आपको अपने द्वारा DOCX दस्तावेज़ को पार्स करने का सुझाव नहीं देता, भले ही यह एक्सएमएल है, यह एक बहुत ही जटिल दस्तावेज़ प्रारूप है और आप आसानी से कुछ गैर-मजबूत कोड – gd1

+0

लिख सकते हैं महान सुझाव, मैं उस विकल्प की जांच करूंगा! कृपया अपनी टिप्पणी को उत्तर के रूप में जोड़ें, इसलिए यदि यह काम करता है तो मैं आपको क्रेडिट कर सकता हूं :) – andrerav

+1

क्या यह एक-एक-एक स्क्रिप्ट या कुछ है जो समर्थित उत्पादन एप्लिकेशन में जाएगा? यदि यह उत्तरार्द्ध है तो मैं कम से कम आधिकारिक ओओएक्सएमएल एसडीके का उपयोग करने की सिफारिश करता हूं (दुर्भाग्य से मैंने कभी भी .xlsx के लिए उपयोग नहीं किया है और नहीं .docx, इसलिए मैं यह नहीं कह सकता कि यह विशेष कार्य कितना आसान हो सकता है, लेकिन काम कर रहा है इसके बजाय .xlsx कुछ प्रारंभिक हेड-स्क्रैचिंग के बाद बुरा नहीं था), क्योंकि कार्यालय निर्भरता प्रबंधन के लिए दर्द हो सकती है। एसडीके ओएलई स्वचालन के रूप में काफी सरल नहीं है, क्योंकि यह एक्सएमएल पर अपेक्षाकृत पतला आवरण है, लेकिन यह अभी भी डीओएम के साथ काम करने से बेहतर है। –

उत्तर

2
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); 
     Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document(); 

     try 
     { 
      object fileName = @"C:\TT\change.docx"; 
      doc = word.Documents.Open(ref fileName, 
       ref missing, ref missing, ref missing, ref missing, 
       ref missing, ref missing, ref missing, ref missing, 
       ref missing, ref missing, ref missing, ref missing, 
       ref missing, ref missing, ref missing); 

      doc.Activate(); 

      int count = doc.Characters.Count ; 
      int words = doc.Words.Count; ; 
      int paragraphs = doc.Paragraphs.Count; 

      doc.Save(); 

      doc.Close(ref missing, ref missing, ref missing); 
      word.Application.Quit(ref missing, ref missing, ref missing); 
     } 
     catch (Exception ex) 
     { 
      doc.Close(ref missing, ref missing, ref missing); 
      word.Application.Quit(ref missing, ref missing, ref missing); 
     } 
संबंधित मुद्दे