2012-08-31 11 views
6

पर शुरू करने की आवश्यकता है मैं LinqToExcel library का उपयोग कर रहा हूं। अब तक बहुत अच्छा काम कर रहा है, सिवाय इसके कि मुझे एक विशिष्ट पंक्ति पर क्वेरी शुरू करने की आवश्यकता है। ऐसा इसलिए है क्योंकि डेटा से एक्सेल स्प्रेडशीट डेटा शुरू होने से पहले एक्सेल फ़ाइल के शीर्ष पर कुछ छवियों और "शीर्षलेख" जानकारी का उपयोग करता है।LinqToExcel - एक विशिष्ट पंक्ति

डेटा को पढ़ने के लिए सरल होगा और काफी सामान्य है, मुझे बस एक विशिष्ट पंक्ति से शुरू करने के लिए ExcelQueryFactory को बताना है।

मुझे WorksheetRange<Company>("B3", "G10") विकल्प से अवगत है, लेकिन मैं एक अंतिम पंक्ति निर्दिष्ट नहीं करना चाहता हूं, जहां फ़ाइल फ़ाइल को पढ़ना शुरू करें।

नवीनतम वी का उपयोग करना। LinqToExcel की सी #

उत्तर

1

साथ आप WorksheetRange<Company>("B3", "G")

+0

हां, unfortuantly यह मुझे एक त्रुटि "EndRange तर्क 'जी' है सेल नाम के लिए अमान्य प्रारूप" – contactmatt

0

Unforunatly की कोशिश की, इस समय और LinqToExcel ढांचे में यात्रा पर है, वहाँ यह करने के लिए किसी भी तरह से होना प्रतीत नहीं होता है।

इसके आस-पास पहुंचने के लिए हमें क्लाइंट को एक्सेल दस्तावेज़ के भीतर अपनी "शीट" में अपलोड करने की आवश्यकता है। पहली पंक्ति में हेडर पंक्ति और इसके नीचे डेटा। अगर वे किसी भी "मेटा डेटा" चाहते हैं तो उन्हें इसे किसी अन्य शीट में शामिल करने की आवश्यकता होगी। नीचे एक विशिष्ट शीट से पूछताछ के तरीके पर LinqToExcel documentation से एक उदाहरण दिया गया है।

var excel = new ExcelQueryFactory("excelFileName"); 
var oldCompanies = from c in repo.Worksheet<Company>("US Companies") //worksheet name = 'US Companies' 
        where c.LaunchDate < new DateTime(1900, 0, 0) 
        select c; 
2

मैं सिर्फ इस कोड की कोशिश की और यह ठीक काम करने के लिए लग रहा था:

var book = new LinqToExcel.ExcelQueryFactory(@"E:\Temporary\Book1.xlsx"); 

var query = 
    from row in book.WorksheetRange("A4", "B16384") 
    select new 
    { 
     Name = row["Name"].Cast<string>(), 
     Age = row["Age"].Cast<int>(), 
    }; 

मैं केवल वापस डेटा के साथ पंक्तियों मिला है।

4

मुझे लगता है कि आप पहले से ही इस का हल है, लेकिन हो सकता है दूसरों के लिए - लगता है कि आप कुछ रेंज ("बी 3", ...) को निर्दिष्ट करने के रूप में

var excel = new ExcelQueryFactory(path); 
var allRows = excel.WorksheetNoHeader(); 

//start from 3rd row (zero-based indexing), length = allRows.Count() or computed range of rows you want 
for (int i = 2; i < length; i++) 
{ 
    RowNoHeader row = allRows.ElementAtOrDefault(i); 
    //process the row - access columns as you want - also zero-based indexing 
} 

नहीं के रूप में सरल उपयोग कर सकते हैं, लेकिन यह भी जिस तरह से । उम्मीद है कि यह कम से कम किसी को मदद करता है;)

+0

जहां 'length' चर निर्दिष्ट देता है? – CodeArtist

+0

ठीक है, आमतौर पर यह 'allRows.Count' या 'allRows.Count()' या 'allRows.Length' (अभी पता नहीं है, क्षमा करें), यदि आप सभी पंक्तियां पढ़ना चाहते हैं। या निर्दिष्ट करने के लिए प्रतिस्थापन के रूप में (गैर-मौजूदा) 'रेंज (" बी 3 "," जी 10 ") 'आपको इसकी गणना करना है। 'लंबाई' का उपयोग केवल उद्देश्यों को दिखाने के लिए किया गया था। उसके बाद, AFAIK का कोई आसान समाधान नहीं था ... अच्छा बिंदु, मूल पोस्ट संपादित किया गया। – podvlada

2

मैंने यह कोशिश की थी, मेरे परिदृश्य के लिए ठीक काम करता है।

//get the sheets info 
     var faceWrksheet = excel.Worksheet(facemechSheetName); 
     // get the total rows count. 
     int _faceMechRows = faceWrksheet.Count(); 

     // append with End Range. 
    var faceMechResult = excel.WorksheetRange<ExcelFaceMech>("A5", "AS" + _faceMechRows.ToString(), SheetName). 
         Where(i => i.WorkOrder != null).Select(x => x).ToList(); 
+0

मुझे अभी यह बहुत उपयोगी लगता है लेकिन यह इंगित करना चाहता था कि आपको रिकॉर्ड की गिनती के लिए प्रारंभ पंक्ति मान जोड़ने की आवश्यकता है या आप अंत में लाइनों की उस संख्या को याद करते हैं, इसलिए यह int _faceMechRows = faceWrksheet.Count() + 5 होना चाहिए; –

+0

@ डेविडमोलिनेक्स मुझे यकीन नहीं है कि यह 2 साल पहले था, लेकिन मेरे मामले में यह कुछ हेडर रिकॉर्ड छोड़ना था। – Eldho

+0

हाय आप सही हैं मैंने आपके लिए कुछ और देखा है, यदि आपके पास शीर्ष पंक्तियों में डेटा है तो यह ठीक काम करता है। अगर मेरी तरह वे केवल खाली पंक्तियां हैं तो वे लोड नहीं होते हैं, और कुल पंक्ति गणना खाली पंक्तियों की मात्रा से कम होती है।तो यदि आपके पास 5 रिक्त पंक्तियां हैं और डेटा की 15 पंक्तियां (20 कुल पंक्तियां) हैं तो कुल पंक्ति गणना 15 है, इसलिए आपकी सीमा पंक्ति 5 से पंक्ति 15 तक जायेगी, गायब पंक्तियों में पिछले 5 पंक्तियों को जोड़कर आपको वापस लाया जाएगा सही कुल –

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