पर एक विशिष्ट ऑटोफिल्टर जोड़ना मैं कॉलम पर फ़िल्टर सेट करने का प्रयास कर रहा हूं। इस तरह से मैं इंटरॉप में यह किया है:कॉलम
private void CheckMasterFile(string path) {
var xlApp = new Excel.Application();
var xlWorkbook = xlApp.Workbooks.Open(path);
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
foreach (var project in projects) {
if (string.IsNullOrEmpty(project.ProjectID.Value)) {
continue;
}
var xlRange = xlWorksheet.UsedRange;
if (xlWorksheet.AutoFilter != null) {
xlWorksheet.AutoFilterMode = false;
}
xlRange.AutoFilter(Field: 2, Criteria1: project.ProjectID.Value);
var result = xlRange.SpecialCells(Excel.XlCellType.xlCellTypeVisible, Type.Missing);//only shows filtered values
double sum = 0;
foreach (Excel.Range row in result.Rows) {
if (row.Cells[2, 2].Value2() != null) {
if (!NOT_ALLOWED_RUBRIQUES.Contains((string)row.Cells[2, 8].Value2())) {//check if rubrique is allowed or not
//finish method
}
}
}
}
xlWorkbook.Close(SaveChanges: false);
xlApp.Quit();
}
लेकिन एक ही रास्ता मैं EPPlus में स्वत: फ़िल्टर के साथ कुछ कर सकते हैं सक्षम या अक्षम करने के लिए, एक विशिष्ट मूल्य पर एक कॉलम फिल्टर करने के लिए नहीं है। कुछ इस तरह:
sheet.Cells["A RANGE HERE"].AutoFilter = true;
तो क्या मैं यहाँ प्राप्त करने के लिए कोशिश कर रहा हूँ एक विशिष्ट मूल्य पर भारी Excel फ़ाइल फिल्टर करने के लिए और उसके बाद ही उन मूल्यों के साथ पंक्तियों को दिखाने के लिए है।
मैं क्या समझ लिया है है, तो आप चाहते हैं कि जेनरेट किए गए एक्सेल में केवल फ़िल्टर किए गए डेटा सही हों? पूर्व के लिए: यदि आपके पास 1000 रिकॉर्ड हैं और आपका फ़िल्टर केवल 50 पंक्तियों से मेल खाता है तो उत्पन्न एक्सेल में केवल 50 पंक्तियां होनी चाहिए .. क्या मैं इसे सही तरीके से प्राप्त कर रहा हूं? –
अच्छी तरह से एक नई आउटपुट फ़ाइल नहीं है, जिस फ़ाइल में मैं खोल रहा हूं वह 1000 से अधिक रिकॉर्ड हैं। मैं उस फ़ाइल पर एक फ़िल्टर लागू करना चाहता हूं, इसलिए यह केवल मुझे 50 रिकॉर्ड दिखाएगा और पूरी फाइल के माध्यम से लूपिंग के बजाय उन कोशिकाओं पर लूप बनायेगा और जांच करेगा कि उस लूप में प्रत्येक सेल प्रोजेक्ट आईडी (project.ProjectID.Value) के बराबर है या नहीं। – Edward