मैं एक आवेदन जहां OpenXML का उपयोग कर Excel फ़ाइल के लिए कुछ डेटा निर्यात कर सकते हैं विकासशील हूँ छँटाई। ऑटोफिल्टर को छोड़कर सब कुछ ठीक काम कर रहा है। विचार तो यह है कि उपयोगकर्ता स्वचालित रूप से नियंत्रण डेटा फ़िल्टर और क्रमित करने के लिए किया गया है डेटा के मुख्य शरीर के लिए एक स्वत: फ़िल्टर जोड़ना है। कोड में तो, मैं कुछ इस तरह करते हैं:स्वत: फ़िल्टर जोड़ना और कारणों एक्सेल दुर्घटना
var filter = new AutoFilter() { Reference = string.Format("{0}:{1}", topLeftCellReference, bottomRightCellReference) };
worksheet.AppendChild(filter);
निर्यात XLSX में यह कुछ इस तरह दिखाई देता है:
<x:autoFilter ref="A4:L33" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" />
और यह sheetData
और mergeCells
के बीच कार्यपत्रक को जोड़ा गया है।
मैं तो Excel में इस फिल्टर को खोल सकते हैं और यह ठीक काम करता है। उम्मीद करें कि क्या आप कॉलम को सॉर्ट करने का प्रयास करते हैं, कॉलम प्रकार और फिर Excel क्रैश हो जाता है। फ़ाइल को सहेजना और पुनः लोड करना (जो एक्सेल को सबकुछ साफ करने के लिए मजबूर करता है) समस्या को ठीक नहीं करता है। लेकिन, यदि आप (जैसे कि > 10
के लिए एक स्तंभ पर फ़िल्टर एक फिल्टर पहले लागू होते हैं, तो उस फ़िल्टर निकालने के लिए, अब आप तरह दुर्घटनाग्रस्त बिना। मैं एक फ़ाइल एक फ़िल्टर लागू करने और इसे हटाने के बाद बचाया जा सकता है और अब उस फ़ाइल ठीक है, लेकिन पर देख रहे हैं "मरम्मत" फ़ाइल के एक्सएमएल, मैं किसी भी स्पष्ट अंतर नहीं दिख रहा।
किसी को भी किसी भी विचार है कि समस्या क्या कारण हो सकता है? ऐसा कुछ हो रहा है जब एक ऑटो फिल्टर बस के अलावा अन्य लागू करने के क्या करना चाहिए कर रहा हूँ है कार्यपत्रक में जोड़ने
नोट: हम Excel 2010 का उपयोग कर रहे (संस्करण 14.0.7153.5000)
यहाँ एक उदाहरण file है (डाउनलोड क्लिक करें और इसे के रूप में एक ०१२३२५४४४१४ डाउनलोड करेंगे। Excel में खोलने के लिए .xlsx
पर पुनर्नामित करें। संपादन सक्षम करें, कॉलम में से एक का चयन करें और सॉर्ट करने का प्रयास करें)।
संपादित: इस में कुछ और के साथ प्रयोग करना। यदि आप Excel में फ़ाइल को सहेजते हैं, तो यह अभी भी टूटा हुआ है। हालांकि, अगर आप पहले फ़िल्टर लागू करते हैं (और उसके बाद इसे साफ़ करते हैं) और फिर Excel में पुन: सहेजते हैं, तो आपको एक कार्यशील फ़ाइल मिलती है। दो फ़ाइलों (अभी भी टूट resaved फ़ाइल और अब काम कर रहा फ़ाइल) पर करीब देखते हुए, मैं नोटिस कि यह अतिरिक्त बिट कार्यपुस्तिका को जोड़ा गया के बाद फिल्टर लागू किया गया था (और मंजूरी दे दी):
<x:definedNames>
<x:definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">'Sheet 1'!$A$1:$E$11</x:definedName>
</x:definedNames>
सुनिश्चित नहीं हैं कि कुछ या नहीं हो सकता है ...
@ मेसन: ओपनएक्सएमएल आपको हर समय अवैध एक्सेल फाइलें बनाने देता है। चूंकि मान्य एक्सेलएक्स फ़ाइल के नियमों के मुकाबले वैध एक्सेल फ़ाइल के नियम कठोर (और पूरी तरह से अनियंत्रित) हैं (उदाहरण के लिए, मानक में कुछ भी 'वर्कशीट' के तहत बच्चों के आदेश को निर्देशित नहीं करता है, लेकिन एक्सेल बहुत ही चिंतित है कि कुछ बच्चे दिखाना चाहिए)। आमतौर पर एक्सेल शिकायत करता है (एक बहुत ही अनुपयोगी त्रुटि संदेश के साथ) जब आप पहली बार फ़ाइल खोलते हैं। लेकिन यह फ़ाइल ठीक खुलती है और यदि आप कॉलम को सॉर्ट करने का प्रयास करते हैं तो समस्या केवल पॉप अप होती है। –
ऑर्डर प्रलेखन के लिए आपके तत्वों का क्रम सही दिखता है (मेरे [ऑटोफिल्टर उत्तर यहां देखें] (http://stackoverflow.com/a/25410242/3791802)। उत्पादकता उपकरण द्वारा रिपोर्ट किया गया एकमात्र मुद्दा 'फ़ॉन्ट' पर' रंग' तत्वों में से एक है गलत है - मेरे पास [दूसरा उत्तर] है (http://stackoverflow.com/questions/29989234/change-sheet-tab-color -of-excel-file-use-open-xml/29991215 # 29991215) जिसमें 'रंग' की जानकारी है लेकिन मुझे संदेह है कि इससे इस समस्या में मदद मिलेगी। मैं एक नज़र डालेगा और देख सकता हूं कि क्या मैं कुछ भी समझ सकता हूं ... – petelids
@petelids: ऑर्डर वास्तव में निर्दिष्ट किए जाने पर सिर के लिए एक नज़र डालने और धन्यवाद के लिए धन्यवाद। मुझे एहसास नहीं हुआ था कि वहां था और यह मुझे बहुत दुख बचा सकता था। –