2012-03-18 9 views
8

एसडीके का उपयोग करके मैं वर्ड दस्तावेज़ बना रहा हूं जिसमें रिपोर्ट शामिल है। इन दस्तावेजों को टीओसी होना चाहिए। क्या किसी के पास एक पूर्ण समाधान है जिसे मैं समझने के लिए कर सकता हूं कि यह कैसे करें?ओपनएक्सएमएल एसडीके 2.0 का उपयोग कर सामग्री तालिका कैसे उत्पन्न करें?

(मैं http://openxmldeveloper.org/ पर सब कुछ पढ़ा है)

उत्तर

8

एरिक व्हाइट द्वारा Fourth and Final Screen-Cast in Series on Adding/Updating the TOC in OpenXML WordprocessingML Documents पर एक नज़र डालें।

आशा है कि मदद करता है!

अद्यतन:


According FAQ MSDN मंच मैं देख रहा हूँ से है कि इस सुविधा समर्थित नहीं है:

8) कैसे वर्ड दस्तावेज़ में टीओसी (सामग्री तालिका) उत्पन्न करने के लिए?

ओपन एक्सएमएल एसडीके 2.0 में यह सुविधा समर्थित नहीं है। लेकिन आप वर्ड एप्लिकेशन के माध्यम से एक छोटा सा टीओसी उत्पन्न कर सकते हैं, और देखने के लिए कैसे करने के लिए एक टीओसी प्रोग्राम के रूप में उत्पन्न ओपन एक्सएमएल एसडीके उत्पादकता उपकरण में दस्तावेज परावर्तक घटक के साथ टीओसी भागों को दर्शाते हैं। में अधिक विस्तृत जानकारी के लिए, कृपया का संदर्भ लें:


अद्यतन 2


हमारी टिप्पणियों के आधार पर नीचे मैं इस परिदृश्य का उपयोग करने का प्रस्ताव कर सकते हैं:

  1. आप मैन्युअल रूप से एक खाली DOCX फ़ाइल बनाने और टीओसी सम्मिलित इसके अंदर।
  2. फिर आप इस फ़ाइल को सहेजते हैं और इसे ओपनएक्सएमएल एसडीके 2.0 टूल में खोलते हैं, जो आपको टीओसी प्लेसहोल्डर के अंदर ऐसी खाली फ़ाइल उत्पन्न करने के लिए सी # कोड प्रदान करता है।
  3. फिर आप इस डॉकएक्स फ़ाइल के लिए आवश्यक सभी डेटा प्रोग्रामेटिक रूप से फ्लश करते हैं और इसे सहेजते हैं।
  4. इसके अतिरिक्त आपको उस तंत्र को प्रदान करने की आवश्यकता होगी जो डेटा फ़्लश होने के बाद स्वचालित रूप से टीओसी अपडेट करेगा (या दस्तावेज़ खोले जाने के बाद)। ऐसा करने के लिए कुछ विकल्प हैं - ऊपर दिए गए एरिक व्हाइट पोस्ट से लिंक से 3-5 स्क्रीन देखें। विशेष रूप से, मुझे लगता है कि आपको 5th one पर अपना ध्यान देना होगा - "जब भी कोई दस्तावेज़ जिसमें TOC शामिल होता है तो TOC को अपडेट करने के लिए ऑटोओपेन मैक्रो का उपयोग कैसे करें"।

यह सब थोड़ा मुश्किल दिखता है, लेकिन मुझे उम्मीद है कि इससे मदद मिलती है। मदद के लिए Dmitri Pavlov (@DmitryPavlov) को

+0

धन्यवाद, लेकिन लिंक टूटा हुआ है। था [यह] (http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2011/08/22/exploring-tables-of-contents-in-openxml-wordprocessingml-documents-part-4.aspx) यह था ? – Yeseanul

+0

मैंने लिंक तय किया है। और - हाँ - यह openxmldeveloper.org पर पोस्ट जैसा ही है ...कुछ शोध के बाद मैंने कुछ जवाबों के साथ अपना उत्तर समायोजित किया है –

+0

उत्तर के लिए धन्यवाद। मैंने अधिकांश एमएसडीएन से संबंधित सामग्री भी पढ़ी है, लेकिन मुझे नहीं पता कि इस समाधान को कैसे कार्यान्वित किया जाए। इसके अलावा, किसी ने भी एक उदाहरण प्रदान नहीं किया है। आखिरकार, एक टीओसी दस्तावेज़ का एक महत्वपूर्ण हिस्सा है ... मैंने सोचा था कि इसे ओपनएक्सएमएल एसडीके द्वारा एक तरफ या किसी अन्य तरीके से कवर किया गया था (या कम से कम किसी ने समाधान के लिए एक व्यावहारिक आसान उपयोग किया था)। – Yeseanul

3

धन्यवाद।

मैं अपने खुद के प्रश्न का उत्तर नहीं देना चाहता, लेकिन यह सिर्फ मेरे द्वारा उठाए गए कदमों को स्पष्ट करने के लिए है। Exploring Tables-of-Contents in Open XML WordprocessingML Documents -

रुचि किसी के लिए भी सलाह 5-भाग स्क्रीन के कलाकारों एरिक व्हाइट, देखने के लिए है। इसमें टीओसी जोड़ने और अपडेट करने के संबंध में सभी जानकारी है (बहुत अधिक)।

मेरे समाधान एक टेम्पलेट (: हैडर 1-5, टीओसी शैली, आदि सिर्फ एक नियमित रूप से खाली दस्तावेज़ था कि सब कुछ मैं जरूरत के लिए शैलियों) का इस्तेमाल किया गया। यह शैलियों के मुद्दे के लिए त्वरित समाधान के रूप में विशेष रूप से उपयोगी है (नया दस्तावेज़, जिसमें टीओसी है, की एक नई शैली होगी। Xml बनाया गया है; इस फ़ाइल में कुछ अतिरिक्त डेटा है; परिणामस्वरूप टीओसी में पदानुक्रम के रूप में नहीं है अपेक्षित - यानी, हेडर 2 हेडर 1 का बच्चा है, हेडर 3 हेडर 2 का एक बच्चा है, आदि)।

इसलिए

:

  1. एक वर्ड दस्तावेज़ बनाएँ और सभी तत्वों है कि आप बाद में प्रोग्राम के रूप में जोड़े जाने के लिए उम्मीद जोड़ने (जैसे, हैडर 1-5, विषय-सूची, आदि)। सभी सामग्री हटाएं और दस्तावेज़ को सहेजें (इसका कारण सभी आवश्यक तत्वों के लिए शैली बनाना है)।

  2. मैं व्यक्तिगत रूप से टेम्पलेट (फ़ाइल कदम # 1 पर बनाया गया) अपने प्रोजेक्ट में एक संसाधन के रूप में जोड़ा।

  3. अपने कोड में, टेम्पलेट की एक नई प्रतिलिपि (यह वास्तविक फ़ाइल है कि आप पर काम करेंगे हो जाएगा) पैदा करते हैं। मैंने उपयोग किया:

    byte[] stream = Properties.Resources.Template; 
    File.WriteAllBytes(@"D:\Template.docx", stream); 
    File.Copy(@"D:\Template.docx", @"D:\New.docx"); 
    
  4. इस दस्तावेज़ में सभी डेटा फ़्लश करें।

  5. स्क्रीन कास्ट 2, 3 या 4 से स्रोत फ़ाइलें अपनी परियोजना में जोड़े (के लिए इस कृपया देखें स्क्रीन कास्ट 3) - उन पदों के अंत में आप TocAdder.zip डाउनलोड करने के लिए एक लिंक मिलेगा । या बस TocAdder.dll पर एक संदर्भ जोड़ें।

  6. टीओसी डालें। सिर्फ एक उदाहरण:

    using (WordprocessingDocument wdoc = WordprocessingDocument.Open(@"D:\New.docx", true)) 
    { 
        XElement firstPara = wdoc 
         .MainDocumentPart 
         .GetXDocument() 
         .Descendants(W.p) 
         .FirstOrDefault(); 
        TocAdder.AddToc(wdoc, firstPara, 
         @"TOC \o '1-3' \h \z \u", null, null); 
    } 
    
  7. टेम्पलेट से लोगों के साथ नव निर्मित दस्तावेज़ में शैलियों बदलें। आप इस संसाधन का उपयोग एमएसडीएन से कर सकते हैं: Replacing the Styles Parts in Word 2010 Documents by Using the Open XML SDK 2.0। फिर, एक उदाहरण:

    string fromDoc = @"D:\Template.docx"; 
    string toDoc = @"D:\New.docx"; 
    var node = WDExtractStyles(fromDoc, false); 
    if (node != null) 
        WDReplaceStyles(toDoc, node, false); 
    node = WDExtractStyles(fromDoc); 
    if (node != null) 
        WDReplaceStyles(toDoc, node); 
    
  8. वैकल्पिक रूप से आदेश मोडल संवाद बॉक्स वर्ड ऊपर डालता है साथ समस्या को हल प्राप्त करने के लिए स्क्रीन कास्ट 3, 4 या 5 में वर्णित विधियों में से एक का उपयोग करें।

आशा है कि यह किसी के लिए उपयोगी होगा।

+0

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

संबंधित मुद्दे