2009-12-07 15 views
5

मैं ऐसे एप्लिकेशन पर काम कर रहा हूं जो वर्ड आउटपुट की अपेक्षाकृत बड़ी मात्रा उत्पन्न करता है। वर्तमान में, हम दस्तावेज़ निर्माण करने के लिए वर्ड इंटरऑप सेवाओं का उपयोग कर रहे हैं, लेकिन यह काफी धीमा है, खासकर कार्यालय के पुराने (पूर्व-2007) संस्करणों में। हम पीढ़ी को तेज करना चाहते हैं।सी # से वर्ड फाइलों की पीढ़ी को कैसे बढ़ाया जाए?

मैंने अभी तक बहुत सारी प्रोफाइलिंग नहीं की है, लेकिन मुझे पूरा भरोसा है कि समस्या यह है कि हम बहुत सी कॉम कॉल कर रहे हैं। मुझे आशा है कि प्रोफाइलिंग कॉल की एक उप-समूह उत्पन्न करेगी जो दूसरों की तुलना में धीमी है, लेकिन मेरा आंत मुझे बताता है कि यह शायद COM ओवरहेड (या वर्ड इंटरऑप ओवरहेड) का सवाल है, न केवल कुछ धीमी कॉल।

इसके अलावा, उत्पाद HTML आउटपुट उत्पन्न कर सकता है, और यह प्रक्रिया (ए) बहुत तेज़ है, और (बी) एचटीएमएल-विशिष्ट कार्यक्षमता के टुकड़ों के लिए एक अलग सबक्लास के साथ, एक ही कोडपैथ का उपयोग करता है। तो मुझे पूरा यकीन है कि हमारा एल्गोरिदम मौलिक रूप से धीमा नहीं है।

तो ... मैं Word फ़ाइलों की पीढ़ी को तेज करने के वैकल्पिक तरीकों के लिए सुझावों की तलाश में हूं।

हम जेनरेट की गई HTML फ़ाइलों को सिर्फ .doc में नामित नहीं कर सकते हैं, और हम इसके बजाय आरटीएफ उत्पन्न नहीं कर सकते हैं - दोनों मामलों में, महत्वपूर्ण स्वरूपण जानकारी खो जाती है, और आरटीएफ मामले में, रेखांकित ग्राफिक्स काम नहीं करते हैं मजबूती के साथ।

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

उत्तर

5

यदि आप इसे बर्दाश्त कर सकते हैं, तो मैं Aspose.Words उत्पाद की अनुशंसा करता हूं। बहुत तेज़ और वर्ड को स्थापित करने की आवश्यकता नहीं है।

इसके अलावा कार्यालय इंटरऑप का उपयोग करना बहुत आसान है।

+0

मुझे इसका उपयोग करना अच्छा लगेगा, लेकिन मूल्य टैग हमारी विशेष आवश्यकताओं के लिए निषिद्ध है - हमारा ऐप डेस्कटॉप ऐप है, इसलिए यह $ 2500/डेवलपर या ऐसा है। –

+0

हाँ मुझे पता है तुम्हारा क्या मतलब है। इस महंगे उपकरण को पाने के लिए बहुत सारी बांह घुमाती है। मैंने लिखा कोड का एक टुकड़ा मुझे लगभग 4 बजे तक ले गया, मुझे संदेह है कि यह मुझे सही काम करने और धीमी गति से काम करने के लिए एक सप्ताह लेगा। मुझे लगता है कि हमें हमारे पैसे लायक हैं। – Crispy

1

आपका मैक्रो दृष्टिकोण बिल्कुल धीमा एक्सेल इंटरऑप (संस्करण 2003 का उपयोग करके मुझे लगता है) को बढ़ाया गया है।

हमने पाया (कम से कम एक्सेल के साथ) कि धीमापन इंटरऑप के माध्यम से बार-बार व्यक्तिगत कॉल के कारण था। हमने आदेशों को गुच्छा करना शुरू किया (यानी बड़ी श्रेणियों को प्रारूपित करें, और उसके बाद अलग-अलग सेल को अलग-अलग बनाने के बजाए विशिष्ट कोशिकाओं को आवश्यक रूप से बदलें), और तार्किक रूप से मैक्रोज़ पर स्थानांतरित हो गए।

मुझे लगता है कि मैक्रो + टेम्पलेट दृष्टिकोण खुशी से अनुवाद करेगा।

+0

कूल ... आपने अपने .NET ऐप से मैक्रो में डेटा संचार करने के साथ कैसे व्यवहार किया? –

+0

स्मृति से, हमने डेटा को कम से कम इंटरऑप कॉल के साथ धक्का देने की कोशिश की। शायद अगर आप भाग्यशाली हैं, तो आप इसे एक ब्लॉक में धक्का दे सकते हैं, और क्या आपका मैक्रो इसे पार्स कर सकता है और अपना व्यवसाय कर सकता है? – Gregory

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