2012-08-17 19 views
5

मैं एक सीएक्सडीबीजीड से एक्सेल फ़ाइल में डेटा निर्यात कर रहा हूं। मैं फ़ाइल बनाने और इसमें डेटा कॉपी करने में सक्षम हूं, लेकिन मुझे कॉलम स्वरूपण के साथ वास्तविक समस्या है। चूंकि मैं एक डीबी से डेटा खींच रहा हूं, इसलिए मैं स्प्रेडशीट को इस प्रकार को प्रतिबिंबित करना चाहता हूं: NUMBER, VARCHAR2, DATE और इसी तरह। मैं नेत्रहीन एक मैक्रो बनाया, VBA कोड के लिए देखने के लिए चला गया, और डेल्फी परियोजना में यह दोहराया: समय की सबसेमैं एक्सेल कॉलम प्रकार और स्वरूपण कैसे सेट करूं?

sheet.Columns[K+2].NumberFormat := '0,000'; //Number 
sheet.Columns[K+2].NumberFormat := '@'; //Text 
sheet.Columns[K+2].NumberFormat := 'm/d/yyyy'; //Date 

संख्या स्वरूपण काम करता है ठीक है, लेकिन अन्य दो नहीं है। जब मैं जेनरेट की गई फ़ाइल खोलता हूं, तो टेक्स्ट कॉलम "कस्टम" प्रकार के रूप में दिखाई देता है और प्रत्येक सेल "-64" प्रदर्शित करता है। यदि मैं एक सेल को संपादित करने के लिए जाता हूं, तो वास्तव में सही मूल्य वास्तव में होता है। दिनांक एक और मुद्दा है: डीबी का प्रारूप डीडी/एमएम/yyyy है और यदि मैं इसे Excel के रूप में फ़ीड करता हूं, तो यह सब गड़बड़ हो जाता है। मैंने सही प्रारूप स्थापित करने का प्रयास किया, लेकिन फिर एक्सेल इसे पहचान नहीं पाया।

कोई सुराग?

मैं कॉलम चौड़ाई भी सेट कर रहा हूं। यह बेकार ढंग से काम करता है।

+0

मुझे लगता है कि जब आप सीएक्सडीबीजीड कहते हैं तो आप डेवलपर एक्सप्रेस घटकों का जिक्र कर रहे हैं। यदि हां, तो क्या आप डेवलपर एक्सप्रेस द्वारा प्रदान की गई ExportGridToExcel() प्रक्रिया का उपयोग कर Excel में निर्यात कर रहे हैं? –

+0

मैंने कोशिश की है लेकिन इसमें डेटा प्रकार सेट करने में समस्याएं हैं। यही कारण है कि मैं चीजों को मैन्युअल रूप से करना चाहता हूं – asg2012

+0

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

उत्तर

3

आपने यह नहीं कहा है कि "आप मैन्युअल रूप से चीजें कैसे कर रहे हैं" जिसका अर्थ है कि लोगों को पूरी तरह से अनुमान लगाया जाना चाहिए कि आप क्या कर रहे हैं। तो यहाँ मेरी जंगली अनुमान है:

  1. अगर मैं तुम्हें डेवलपर एक्सप्रेस से एक्सप्रेस स्प्रेडशीट घटक का उपयोग कर रहे मान मैं इस घटक के साथ estensive अनुभव है। यह मनमाने ढंग से संख्यात्मक प्रारूपों का समर्थन नहीं करता है। यह वास्तव में दो दशमलव स्थानों के साथ "पैसा" प्रारूप (0.00) का समर्थन करता है। यह तीन या एक, या दशमलव स्थानों की किसी अन्य संख्या का समर्थन नहीं करता है। यदि ऐसा है, तो यह एक्सप्रेस स्प्रेडशीट में एक ज्ञात डिज़ाइन समस्या है।

  2. यदि मैन्युअल रूप से आप का अर्थ है कि "शीट" जैसा कि आप ऊपर दिखाते हैं, एक ओएलई ऑब्जेक्ट है और आप ओएलई ऑटोमेशन के माध्यम से एक्सेल में स्वयं संचार कर रहे हैं, तो आपको सेल को व्यक्तिगत रूप से या एक श्रेणी के रूप में स्वरूपित करना चाहिए, और कॉलम नहीं वस्तुओं। मुझे यकीन नहीं है कि कॉलम ऑब्जेक्ट प्रारूप सेल मानों को कभी ओवरराइड करते हैं, अगर वे बिल्कुल करते हैं। कोशिकाओं का स्वरूपण आमतौर पर सेल पदार्थ द्वारा एक सेल होता है, और इस तरह से निपटा जाना चाहिए।

  3. यदि आप वास्तव में यह सही तरीके से काम करना चाहते हैं तो आप ओएलई स्वचालन के माध्यम से एक्सेल का उपयोग नहीं करेंगे, आपको एक उचित एक्सेल एक्सएलएस प्रारूप सक्षम लेखन पुस्तकालय मिलेगा। मुझे पूरा यकीन था कि आप सीधे सीएक्स (डेवीएक्स) डीबी ग्रिड से उचित परिणाम प्राप्त कर सकते हैं, लेकिन मैं यहां उनके मंचों पर नहीं पूछूंगा। नियमित डीबी ग्रिड के साथ, मैं केवल TJvDBGridExcelExport का उपयोग करता हूं जो जेडी जेवीसीएल में आता है, और जो नियमित वीसीएल डीबी ग्रिड के साथ काम करता है।

4

समस्या यह है कि असाइन किए गए मान यूनिकोड तार हैं। इसे आज़माएं:

sheet.Columns[K+2].NumberFormat := AnsiChar('@'); 
sheet.Columns[K+2].NumberFormat := AnsiString('m/d/yyyy'); 

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

  • कोई संबंधित समस्या नहीं^_^