2017-10-18 13 views
9

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

हम एक्सेल शीट के हेरफेर के लिए ईपीप्लस का उपयोग कर रहे हैं।

संक्षेप में, चादर की संरचना इस प्रकार है:

  1. Sheet A रिपोर्टिंग तत्वों (पिवट तालिकाओं, धुरी चार्ट और स्लाइसर)
  2. Sheet B जो पूरे डेटा सेट
  3. एक नामित होता है साथ श्रेणी =OFFSET(Data!$A$1;0;0;COUNTA(Data!$A:$A);COUNTA(Data!$1:$1)) के रूप में परिभाषित की गई है जो कि उस शीट में डालने वाले डेटासेट के आकार को अनुकूलित करती है
  4. जो भी नाम श्रेणी है, मैंने पावर क्वेरी में लोड किया है और कार्यपुस्तिका में जोड़ा गया डेटा मॉडल
  5. सभी Sheet A से रिपोर्टिंग तत्वों से डेटा मॉडल

कुल मिलाकर डेटा लोड करने के लिए कॉन्फ़िगर है, इस महान रूप में लंबे समय से काम करता है के रूप में हम स्वयं हमारे डेटा के साथ Sheet B भरने रहे हैं। जब हम डेटा में भरने के लिए EPPlus इस्तेमाल करने की कोशिश हम जब फ़ाइल को सहेजते समय कोई त्रुटि मिलती है:

The cachesource is not a worksheet 

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

ईपीप्लस के साथ इस समस्या से बचने के तरीके के बारे में कोई सुझाव? अभी के लिए, हम पिवोट टेबल्स के उपयोग के बिना जारी रहेगा, हम उन्हें किसी बिंदु पर वापस करना चाहते हैं :)

+1

https://github.com/pruiz/EPPlus/blob/master/EPPlus/Table/PivotTable/ExcelPivotCacheDefinition.cs (और त्रुटि संदेश) के आधार पर आपने वर्कशीट के रूप में कैशसोर्स रखने का प्रयास किया है? – mjwills

+0

ईमानदार होने के लिए, मेरे पास इसका थोड़ा सा विचार नहीं है कि इसका क्या अर्थ है या यह कैसे करें :) –

+0

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

उत्तर

1

त्रुटि - "The cachesource is not a worksheet" एक्सेल द्वारा रेंज में स्रोत डेटा की पहचान के कारण हो सकती है कार्यपत्रक।

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

कृपया संबंधित प्रश्न से उपलब्ध एक और विकल्प भी देखें- PivotTable 'cacheSource' के रूप में किसी सीमा के बजाय तालिका को परिभाषित करना, अगर इससे मदद मिलती है।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद @ आईआईटीसी क्या आप इस बात पर विस्तार से बता सकते हैं कि "आप श्रेणी में डंप किए गए डेटा को शीट बी में बदल सकते हैं [...]" मुझे यकीन नहीं है कि मैं पूरी तरह से आपका अनुसरण करता हूं। कैश स्रोत बदलने के संबंध में, मुझे नहीं लगता कि यह मेरे सेटअप के साथ संभव है। जैसा कि ऊपर दी गई मेरी टिप्पणियों में से एक में बताया गया है, मैं सभी पिवट चार्ट और तालिकाओं को हुक करने के लिए पावर क्वेरी और इसके ओलाप क्यूब/डेटा मॉडल का उपयोग कर रहा हूं। ऐसा लगता है कि मेरे विकल्पों को काफी सीमित कर दिया गया है। –

0

पिवोट डेटा में हेरफेर करते समय कई issues related with cache हैं। एक बार मैं this other bounty here के लिए यह पर एक नज़र था।

में EPPlus साथ ही होना चाहिए। आप मैन्युअल रूप से धुरी डेटा कैश को संभालने के लिए, की तरह here किया है।

और यहां आदमी complete solution for handling filters with EPPlus देता है।

उम्मीद है कि यह मदद करता है।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद जे। चोमेल, मुझे आपके द्वारा प्रदान किए गए लिंक पर एक नज़र डालें और उन्हें थोड़ा सा जांचें। –

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