2013-09-01 6 views
11


द्वारा शब्द दस्तावेज़ लाइन से पढ़ें मैं सी # का उपयोग कर एक शब्द दस्तावेज़ पढ़ने की कोशिश कर रहा हूं। मैं सभी पाठ प्राप्त करने में सक्षम हूं लेकिन मैं लाइन और सूची में स्टोर द्वारा लाइन पढ़ने और ग्रिडव्यू पर बाध्य करने में सक्षम होना चाहता हूं। वर्तमान में मेरा कोड केवल एक ही आइटम की एक सूची देता है जिसमें सभी पाठ होते हैं (वांछित लाइन के अनुसार लाइन नहीं)। मैं फ़ाइल पढ़ने के लिए माइक्रोसॉफ्ट.ऑफिस.इंटरोप। वर्ड लाइब्रेरी का उपयोग कर रहा हूं। नीचे मेरा कोड अब तक है:लाइन

Application word = new Application(); 
    Document doc = new Document(); 

    object fileName = path; 
    // Define an object to pass to the API for missing parameters 
    object missing = System.Type.Missing; 
    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); 

    String read = string.Empty; 
    List<string> data = new List<string>(); 
    foreach (Range tmpRange in doc.StoryRanges) 
    { 
     //read += tmpRange.Text + "<br>"; 
     data.Add(tmpRange.Text); 
    } 
    ((_Document)doc).Close(); 
    ((_Application)word).Quit(); 

    GridView1.DataSource = data; 
    GridView1.DataBind(); 
+0

क्या यह ऊपर सूचीबद्ध सभी कोड है। मैं इस सप्ताह के अंत में एक परियोजना शुरू करने जा रहा हूं जो एक शब्द फ़ाइल में पढ़ेगा और फिर डबल कोट्स के बीच सभी कोड निकाल देगा और एक चर "ए" डालेंगे। फिर मुझे एक लेखक के लिए "ए," बी के साथ अल्पविराम के बाद भाग को बदलना होगा जो उसके कोड पर कुछ आंकड़े करना चाहता है। मैं अपने कोड को सभी को देखने के लिए रखूंगा। क्या कोई विशेष आयात किया जाना है? –

+1

मैं डॉकएक्स http://docx.codeplex.com जैसे हल्के लाइब्रेरी का उपयोग करूंगा। – Hamdi

+0

@ हैम्डी धन्यवाद मुझे इसके बारे में पता नहीं था। मैंने कोशिश की है और इंटरऑप के विरोध में यह सुनिश्चित करना आसान है। एक बार फिर से धन्यवाद। –

उत्तर

17

ठीक है। मुझे समाधान here मिला।

Application word = new Application(); 
    Document doc = new Document(); 

    object fileName = path; 
    // Define an object to pass to the API for missing parameters 
    object missing = System.Type.Missing; 
    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); 

    String read = string.Empty; 
    List<string> data = new List<string>(); 
    for (int i = 0; i < doc.Paragraphs.Count; i++) 
    { 
     string temp = doc.Paragraphs[i + 1].Range.Text.Trim(); 
     if (temp != string.Empty) 
      data.Add(temp); 
    } 
    ((_Document)doc).Close(); 
    ((_Application)word).Quit(); 

    GridView1.DataSource = data; 
    GridView1.DataBind(); 
+0

मेरे कोड @ ओपन विधि में यह दिखा रहा है कि पथ मान्य नहीं है और कुछ 'COMException को संभाला नहीं गया था' –

+0

एएसपी.नेट या किसी अन्य सर्वर प्रौद्योगिकी से ऑफिस इंटरऑप का उपयोग करना एक भयानक विचार है। इन एपीआई को डेस्कटॉप एप्लिकेशन में उपयोग के लिए लिखा गया था, कार्यालय स्वचालित करने के लिए (डेस्कटॉप अनुप्रयोगों का एक सूट)। सर्वर अनुप्रयोग कई तरीकों से भिन्न होते हैं जो उन्हें कार्यालय इंटरऑप का उपयोग करने के लिए एक बहुत ही बुरा विचार बनाते हैं। यह माइक्रोसॉफ्ट द्वारा भी असमर्थित है, और आपके कार्यालय लाइसेंस का उल्लंघन कर सकता है। देखें [सर्वर के सर्वर-साइड ऑटोमेशन के लिए विचार] (http://support.microsoft.com/kb/257757) –

6

ऊपर कोड सही है, लेकिन यह बहुत धीमी है:


अंतिम कोड इस प्रकार है। मैंने कोड में सुधार किया है, और यह उपरोक्त की तुलना में बहुत तेज़ है।

List<string> data = new List<string>(); 
Application app = new Application(); 
Document doc = app.Documents.Open(ref readFromPath); 

foreach (Paragraph objParagraph in doc.Paragraphs) 
    data.Add(objParagraph.Range.Text.Trim()); 

((_Document)doc).Close(); 
((_Application)app).Quit(); 
1

इस यो के बारे में कैसे। दस्तावेज़ से सभी शब्द प्राप्त करें और उन्हें बदले में विभाजित करें या जो भी आपके लिए बेहतर है। फिर सूची

List<string> lines = doc.Content.Text.Split('\n').ToList(); 
+1

इसकी \ r \ a, लेकिन \ r करेगा, नहीं \ n – thang