2012-03-13 12 views
5

मुझे एक शब्द दस्तावेज़ टेम्पलेट (डॉक्क्स) होना चाहिए, जिसमें शीर्षक, लेखक का नाम, दिनांक इत्यादि शामिल होंगे।डॉक्क्स दस्तावेज़ों से मेटाडेटा जानकारी कैसे पढ़ा जाए?

इस टेम्पलेट का उपयोग उपयोगकर्ताओं द्वारा इसे पूरा करने के लिए किया जाएगा। मुझे एक सी # प्रोग्राम बनाना होगा, जो डॉक्स फ़ाइल में ले जाएगा और ब्याज की सभी जानकारी (शीर्षक, नाम, दिनांक, ..) पढ़ेगा।

तो मेरी प्रश्न हैं:

  1. कैसे मैं कह टेम्पलेट में मेटाडाटा रखूँ: इस शीर्षक है, इस तिथि है, इस नाम है, आदि? (प्रोग्रामेटिक रूप से नहीं)

  2. मैं प्रोग्राम को उस जानकारी को कैसे पढ़ूं?

+0

इसके बारे में काम कर रहे पूर्ण स्रोत कोड नमूने के साथ कोई अंतिम समाधान? – Kiquenet

उत्तर

8

सामग्री नियंत्रणों का उपयोग करने के लिए इसका एक तरीका होगा। कार्यालय में, आप अपना टेम्पलेट बना सकते हैं, और फिर अपने प्रत्येक संबंधित इनपुट के लिए आप इन नियंत्रणों में से एक डाल सकते हैं। वे कार्यालय में डेवलपर टैब के अंतर्गत हैं।

अपने नियंत्रण डालने के बाद आपको उनमें से प्रत्येक के लिए एक अद्वितीय नाम होना चाहिए। कार्यालय उन सभी को एक ही नाम दे देगा, लेकिन आपको अपने टेम्पलेट दस्तावेज़ में उन सभी को विशिष्ट रूप से पहचानने की आवश्यकता होगी।

अब आपको इन नियंत्रणों में इनपुट करने वाला डेटा प्राप्त करने की आवश्यकता है। फिर, वहाँ कुछ बेहतर समाधान होने की संभावना है, लेकिन एरिक व्हाइट महान OpenXML सामान के सभी प्रकार है, और इसलिए यहाँ अपने में से एक है: Iterating over Content Controls

मुझे लगता है कि वहाँ एक तालिका के अंदर नेस्ट सामग्री नियंत्रण पाने के साथ समस्याओं है। इसलिए, यदि आप ऐसा करते हैं, तो मुझे लगता है कि आपको सामग्री नियंत्रणों को खोजने के लिए तालिका के तत्वों पर विशेष रूप से लूप करना होगा।

इसके अलावा, आप शायद अपनी .doct फ़ाइल से एक .docx को बचाने के लिए है, जो मैं वहाँ किसी भी में निर्मित "एक लाइनर" OpenXML में विधि नहीं लगता कि चाहते करने जा रहे हैं; हालांकि, आप एक नया वर्ड दस्तावेज़ बना सकते हैं, और फिर टेम्पलेट की फ़ाइल स्ट्रीम को नव निर्मित डॉक्क्स फ़ाइल में लिख सकते हैं। फिर, ज़ाहिर है, वहां बेहतर समाधान हो सकते हैं।

क्या आप यहां हैं? वहाँ अच्छी चीजें के बहुत सारे है: Introduction to OpenXML

साथ ही, एरिक OpenXML YouTube channel

+0

धन्यवाद, मुझे उस पर इशारा करने के लिए बहुत कुछ, जेसी, इससे मुझे मेरी समस्या का समाधान करने में मदद मिली। चीयर्स – Dave

5

सभी OpenXML दस्तावेजों कोर मेटाडाटा में निर्माण किया है कि क्या आप System.IO.Packaging के माध्यम से की जरूरत है क्या करेंगे पर अधिक से अधिक वीडियो जारी किया गया है। एक बार जब आप सी # में खुले एक्सएमएल एसडीके का उपयोग कर शब्द फ़ाइल खोलें, तो आप इन मानों को PackageProperties कक्षा के माध्यम से प्राप्त कर सकते हैं। 11 गुण हैं जिनका आप उपयोग कर सकते हैं।

आप अपने उपयोगकर्ता को Word के दस्तावेज़ सूचना पैनल (डीआईपी) का उपयोग करके मेटाडेटा दर्ज करने के लिए "प्रोत्साहित" करते हैं।

enter image description here टेम्पलेट के लिए डेवलपर टूलबार में सेटिंग द्वारा, जब आप अपना टेम्पलेट खोलते हैं तो आप डिफ़ॉल्ट रूप से इसे मजबूर कर सकते हैं। अपने टेम्पलेट में इसे सेट करने के तरीके पर following article देखें।

मैंने एक त्वरित विंडोज फॉर्म ऐप लिखा है जो ऊपर प्रदर्शित किए गए वर्ड फ़ाइल के पैकेजप्रॉपर्टीज पर खुली एक्सएमएल एसडीके कॉल का उपयोग करके इस जानकारी को प्रदर्शित करता है।

enter image description here

नमूना शब्द फ़ाइल के साथ Here is the full solution शामिल थे।

उम्मीद है कि इससे मदद मिलती है।

+0

हाय, इसके लिए धन्यवाद, लेकिन मैंने अभी उस लड़के के साथ जांच की है जो टूल के लिए है और स्पष्ट रूप से अतिरिक्त जानकारी जोड़ना एक विकल्प नहीं है क्योंकि उपयोगकर्ता दो बार एक ही जानकारी नहीं जोड़ना चाहते हैं:/मेरे पास अभी होगा सामग्री नियंत्रण की सामग्री को कैसे प्राप्त करें, यह जानने के लिए कि – Dave

7

1) कैसे मैं कह टेम्पलेट में मेटाडाटा रखूँ: इस शीर्षक है, इस तिथि है, इस, नाम है आदि? (नहीं प्रोग्रामेटिक)

आप कर सकता है कि एमएस वर्ड 2010 में जानकारी टैब पर जैसा कि नीचे दिखाया:

How to set manually the MS Word document properties like Author, Title, etc...

2) कैसे मैं प्रोग्राम के रूप में है कि जानकारी पढ़ा करते हैं?

एक बार जब आप अपने दस्तावेज़ (या टेम्पलेट) आप हमेशा खुला है एक्सएमएल एसडीके 2.0 उत्पादकता उपकरण (जो OpenXML SDK साथ स्थापित किया गया है) के साथ इसके अंदर दिखाई दे सकता है कहां बनाया था (क्या वर्गों का उपयोग करने के लिए) प्राप्त करने के लिए देखने के लिए/कुछ जानकारी सेट से/दस्तावेज तक।

Open XML SDK 2.0 Productivity Tool

इसके अलावा मुझे लगता है कि इस पोस्ट आप अपने कार्य को हल करने के लिए मदद कर सकता है: Add and update custom document properties in a docx


अद्यतन:

हाय डेव,

कृपया एक नजर है इस एमएसडीएन आलेख में - Retrieving Application Properties from Word 2010 Documents by Using the Open XML SDK 2.0

आशा है कि यह वही है जो आप खोज रहे हैं।

+0

हाय, इसके लिए धन्यवाद, लेकिन मैंने अभी उस व्यक्ति के साथ जांच की है जिस पर टूल है और स्पष्ट रूप से अतिरिक्त जानकारी जोड़ना एक विकल्प नहीं है क्योंकि उपयोगकर्ता जोड़ना नहीं चाहते हैं एक ही जानकारी दो बार:/मैं सिर्फ पता लगाने के लिए सामग्री नियंत्रण – Dave

+0

हाय डेव की सामग्री प्राप्त करना होगा, मैं सिर्फ अपनी पोस्ट को अद्यतन किया है इसके बाद के संस्करण (अद्यतन शब्द के बाद देखें)। कृपया मेरे पोस्ट को आपके सवालों के जवाब के रूप में चिह्नित करने के लिए स्वतंत्र महसूस करें (यदि यह निश्चित रूप से है)। Nuget में –

+0

OpenXML ओपन एक्सएमएल एसडीके 2.0.0 http://www.nuget.org/packages/OpenXmlSdk/ लेकिन नहीं खुला एक्सएमएल एसडीके 2.5.0 है – Kiquenet