2015-04-15 3 views
17

का उपयोग कर एक्सेल फ़ाइल से पढ़ना मेरी एक्सेल फ़ाइल टैब्यूलर डेटा में नहीं है। मैं एक्सेल फ़ाइल से पढ़ने की कोशिश कर रहा हूं। मेरे पास मेरी एक्सेल फ़ाइल के अंतर्गत अनुभाग हैं जो टैब्यूलर हैं।ClosedXML

मैं 3 से 20 पंक्तियों जो सारणीबद्ध रहे हैं और डेटा को पढ़ने के माध्यम से लूप की जरूरत है।

यहाँ मेरी कोड की पार्टी है:

 string fileName = "C:\\Folder1\\Prev.xlsx"; 
    var workbook = new XLWorkbook(fileName); 
    var ws1 = workbook.Worksheet(1); 

कैसे कर 3 से 20 और स्तंभों 3,4, 6, 7, 8 पढ़ी जाने वाली पंक्तियों के माध्यम से मैं पाश? यदि कोई पंक्ति खाली है, तो मैं इसे कैसे निर्धारित कर सकता हूं ताकि मैं बिना किसी पंक्ति के प्रत्येक कॉलम के मान के बिना इसे छोड़ सकूं।

उत्तर

20

एक पंक्ति पहुंचने के लिए:

var cell = row.Cell(3); 

करने के लिए:

bool empty = row.IsEmpty(); 

एक पंक्ति में एक सेल (स्तंभ) पहुंचने के लिए:

var row = ws1.Row(3); 

यह जांचने के लिए पंक्ति रिक्त है एक सेल से मूल्य मिलता है:

object value = cell.Value; 
// or 
string value = cell.GetValue<string>(); 

अधिक जानकारी के लिए documentation देखें।

+0

क्या आप सेल शैलियों तक पहुंचने और एचटीएमएल शैलियों के रूप में आवेदन करने का तरीका जानते हैं? – xwpdev

+0

यह एक और सवाल है (जिसे आपको बनाना चाहिए, शायद)। आप 'cell.Style .... 'के साथ शैलियों तक पहुंच सकते हैं, लेकिन आप उन्हें HTML या CSS शैलियों में स्वचालित रूप से परिवर्तित नहीं कर सकते हैं। आपको स्वयं कनवर्टर लिखना होगा। – Raidri

+0

क्या आप मुझे बता सकते हैं कि फ़ील्ड नाम –

2

मैं RowsUsed() विधि का उपयोग केवल उन पंक्तियों जो गैर खाली या उपयोगकर्ता द्वारा संपादित किया गया है की एक सूची प्राप्त करने के लिए पसंद करते हैं। इस तरह से मैं प्रत्येक पंक्ति के लिए चेक बनाने से बच सकता हूं चाहे वह खाली है या नहीं।

मुझे यकीन नहीं है कि यह आपके पोस्ट में वर्णित सटीक समस्या कथन में फिट होगा या नहीं, लेकिन यह कोड स्निपेट आपकी सभी खाली रिक्त पंक्तियों में से 3 से 20 वीं पंक्ति संख्याओं को संसाधित करने में आपकी सहायता कर सकता है प्रक्रिया शुरू करने से पहले खाली पंक्तियों को फ़िल्टर किया गया। प्रसंस्करण शुरू करने से पहले गैर-खाली पंक्तियों को फ़िल्टर करना उन पंक्ति संख्याओं को प्रभावित कर सकता है जिन्हें आप वास्तव में संसाधित करना चाहते हैं।

लेकिन मुझे लगता है कि RowsUsed() विधि किसी भी सामान्य स्थिति में बहुत उपयोगी है जब आप एक एक्सेल शीट की पंक्तियों कार्रवाई कर रहे हैं।

string fileName = "C:\\Folder1\\Prev.xlsx"; 
using (var excelWorkbook = new XLWorkbook(fileName)) 
{ 
    var nonEmptyDataRows = excelWorkbook.Worksheet(1).RowsUsed(); 

    foreach (var dataRow in nonEmptyDataRows) 
    { 
     //for row number check 
     if(dataRow.RowNumber() >=3 && dataRow.RowNumber() <= 20) 
     { 
      //to get column # 3's data 
      var cell = dataRow.Cell(3).Value; 
     } 
    } 
}