2015-03-06 9 views
6

में प्रति वर्कशीट पंक्तियों की गणना कैसे करें I Interop लाइब्रेरी से OpenXML पर स्विच किया गया, क्योंकि मुझे बड़ी Excel फ़ाइलों को पढ़ने की आवश्यकता है। इससे पहले मैं उपयोग कर सकता था:ओपनएक्सएमएल

worksheet.UsedRange.Rows.Count 

वर्कशीट पर डेटा के साथ पंक्तियों की संख्या प्राप्त करने के लिए। मैंने प्रगति पट्टी बनाने के लिए इस जानकारी का इस्तेमाल किया। ओपनएक्सएमएल में मुझे नहीं पता कि वर्कशीट के बारे में एक ही जानकारी कैसे प्राप्त करें।

using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(path, false)) 
{ 
    WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; 
    WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); 
    SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); 
    int row_count = 0, col_count; 
    // here I would like to get the info about the number of rows 
    foreach (Row r in sheetData.Elements<Row>()) 
    { 
     col_count = 0; 
     if (row_count > 10) 
     { 
      foreach (Cell c in r.Elements<Cell>()) 
      { 
       // do some stuff 
       // update progressbar 
      } 
     } 
     row_count++; 
    } 
} 

उत्तर

8

ऐसा नहीं है कि मुश्किल (जब आप LINQ का उपयोग करें) नहीं है

using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open("PATH", true)) 
{ 
    //Get workbookpart 
    WorkbookPart workbookPart = myDoc.WorkbookPart; 

    //then access to the worksheet part 
    IEnumerable<WorksheetPart> worksheetPart = workbookPart.WorksheetParts; 

    foreach (WorksheetPart WSP in worksheetPart) 
    { 
     //find sheet data 
     IEnumerable<SheetData> sheetData = WSP.Worksheet.Elements<SheetData>();  
     // Iterate through every sheet inside Excel sheet 
     foreach (SheetData SD in sheetData) 
     { 
      IEnumerable<Row> row = SD.Elements<Row>(); // Get the row IEnumerator 
      Console.WriteLine(row.Count()); // Will give you the count of rows 
     } 
} 

Linq के साथ संपादित अब यह सीधे आगे है, क्या मैं अब इस कोड है।

+0

तो, मुझे पहले यह लूपिंग करना पड़ा था? बस पंक्तियों की गिनती करने के लिए? मैं यह पूछता हूं, क्योंकि मैं मुख्य लूप में जहां डेटा को संसाधित करता हूं, मैं प्रोग्रेसबार अपडेट करता हूं, लेकिन इससे पहले मुझे अपनी अधिकतम संपत्ति (जो वर्कशीट पर पंक्तियों की संख्या है) सेट करना पड़ा था – Jacobian

+0

क्षमा करें, एक भीड़ में पोस्ट करें ... कोशिश करें नवीनतम अपडेट :) LINQ –

+0

का उपयोग आपके उत्तर के लिए .. आपको इसकी आवश्यकता नहीं होगी :) मेरा उत्तर वर्कशीट में सभी चादरों के लिए उपलब्ध पंक्तियों की संख्या प्रदान करता है .. बस प्रदान किए गए कोड का उपयोग करें :) –

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