2013-01-04 44 views
7

मुझे एक एसएसआरएस 2005 रिपोर्ट को एक CSV के रूप में निर्यात करने की आवश्यकता है, जहां कॉलम हेडर में रिक्त स्थान होते हैं।क्या सीएसवी को निर्यात करना संभव है और शीर्षलेख में रिक्त स्थान हैं?

वर्तमान में सीएसवी हेडर कॉलम शीर्षक टेक्स्टबॉक्स गुणों से प्राप्त किए गए हैं और रिक्त स्थान के बजाय अंडरस्कोर का उपयोग करते हैं। क्या कोई और बेहतर दृष्टिकोण है?

उदाहरण के लिए, वर्तमान में मेरे पास है:

  • SSRS रिपोर्ट हेडर: प्रभावी होने की तिथि
  • पाठ बॉक्स का नाम: EFFECTIVE_DATE
  • CSV हेडर: EFFECTIVE_DATE

मैं करना चाहते हैं:

  • एसएसआरएस रिपोर्ट हेड एर: प्रभावी होने की तिथि
  • पाठ बॉक्स का नाम: EFFECTIVE_DATE
  • CSV हेडर: प्रभावी होने की तिथि
+0

इस समस्या को हल किया गया। आप इस लिंक http://stackoverflow.com/a/35406795/5929210 के बाद समाधान पा सकते हैं –

उत्तर

1

इसके लिए एक समाधान है। आपको एसएसआरएस गुणों में चयन करने की आवश्यकता है एफ 4, गुण का चयन करें, उस विशेष विशेष टेक्स्टबॉक्स में जिसे आप पुनर्नामित करना चाहते हैं। उदाहरण के लिए, Textbox12 को Effective_Date के रूप में दें। समाधान: प्रभावी डेटा के साथ टेक्स्टबॉक्स का नाम बदलें।

1

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

नोट: डिज़ाइनर में, आपने डेटा पंक्ति के टेक्स्टबॉक्स का टूलटिप सेट किया है, न कि हेडर का टेक्स्टबॉक्स।

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

CsvColumnHeaderHandler नामित आप विधि के लिए देख रहे कक्षा में OnTextBoxBegin और विशेष रूप से लाइन:

this.m_visitor.WriteValue(textBox.ToolTip, this.m_excelMode); 

यह कस्टम प्रतिपादन विस्तार तो हो सकता है:

this.m_visitor.WriteValue(textBox.DataElementName, this.m_excelMode); 

बस इस पढ़ने के लिए बदल रिपोर्ट सर्वर पर तैनात और यह पूरी तरह से काम करता है।

आपको यह जानने की आवश्यकता नहीं है कि इसके लिए एक प्रतिपादन एक्सटेंशन कैसे लिखना है क्योंकि, जैसा कि मैंने कहा था, मैंने अभी कोड को कॉपी (डिकंपिल्ड) किया है। हालांकि, आपको एक कस्टम प्रतिपादन एक्सटेंशन असेंबली को तैनात करने के बारे में जानने की आवश्यकता होगी। तैनाती पर अधिक जानकारी यहां पाई जा सकती है: https://msdn.microsoft.com/en-us/library/ms154516.aspx