2012-10-08 4 views
11

का उपयोग कर xls और xlsx फ़ाइलों को पढ़ने के लिए कैसे करें OLEDB कनेक्शन का उपयोग किए बिना OpenXML प्रारूप के साथ C# का उपयोग कर xls और xlsx फ़ाइलों को कैसे पढ़ा जाए। मैं ओपन एक्सएमएल प्रारूप प्रक्रिया की तलाश में हूं।सी #

नीचे वह कोड है जिसमें मैंने ओएलडीडीबी प्रीोकॉक्चर का उपयोग किया था। लेकिन मैं ओपनएक्सएमएल प्रारूप की तलाश में हूं।

public static DataTable ConvretExcelToDataTable(string FilePath) 
{ 
    string strConn = string.Empty; 

    if (FilePath.Trim().EndsWith(".xlsx")) 
    { 
     strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", FilePath); 
    } 
    else if (FilePath.Trim().EndsWith(".xls")) 
    { 
     strConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", FilePath); 
    } 

    OleDbConnection conn = null; 
    OleDbCommand cmd = null; 
    OleDbDataAdapter da = null; 
    DataTable dt = new DataTable(); 
    try 
    { 
     conn = new OleDbConnection(strConn); 
     conn.Open(); 
     cmd = new OleDbCommand(@"SELECT * FROM [Sheet1$]", conn); 
     cmd.CommandType = CommandType.Text; 
     da = new OleDbDataAdapter(cmd); 
     da.Fill(dt); 
    } 
    catch (Exception exc) 
    { 
     Console.WriteLine(exc.ToString()); 
     Console.ReadLine(); 
    } 
    finally 
    { 
     if (conn.State == ConnectionState.Open) 
      conn.Close(); 
     conn.Dispose(); 
     cmd.Dispose(); 
     da.Dispose(); 
    } 
    return dt; 
} 

आवश्यकता OpenXML स्वरूप में ऊपर रूपांतरण लागू करने के लिए है। धन्यवाद।

+0

एक्सएलएस ओपनएक्सएमएल नहीं है। तो आप XLS फ़ाइलों को पढ़ने के लिए ओपनएक्सएमएल एसडीके का उपयोग नहीं कर सकते हैं। आप इसे केवल एक्सएलएसएक्स फाइलों के लिए उपयोग कर सकते हैं। –

+0

मैंने हाल ही में एक समान प्रश्न का उत्तर दिया [यहां] (http://stackoverflow.com/a/12746187/969613) – JMK

+0

कोई भी उपरोक्त टिप्पणी में मेरे संदेह को स्पष्ट करता है। धन्यवाद। –

उत्तर

3

आप xlsx के लिए OpenXML SDK चाहता हूँ:

http://www.microsoft.com/en-gb/download/details.aspx?id=30425

लेकिन XLS के लिए, आप एक्सएमएल पर आधारित नहीं है इस XLS प्रारूप का उपयोग करने में सक्षम नहीं होगा।

मैं बड़ा फ़ाइलों तक पहुँचने के लिए NPOI पुस्तकालय का उपयोग करें:

http://npoi.codeplex.com/

NPOI पुस्तकालय भी xlsx का समर्थन करता है, तो यह आप उन्हें पहुँचने का एक सुसंगत तरीका देना होगा। डाउनसाइड आपको चादरें/पंक्तियों/स्तंभों के माध्यम से मैन्युअल रूप से लूप करना होगा, और डेटासेट का निर्माण करना होगा जो आपके पास बड़ी कार्यपुस्तिकाएं होने पर प्रदर्शन को प्रभावित करेगा। यदि आप डेटा तक पहुंचने के लिए क्वेरी का उपयोग करना चाहते हैं, तो ओएलडीडीबी एकमात्र तरीका है जिसे मैंने पाया है।

2

यदि आपके पास Excel स्थापित है, तो आप Microsoft.Office.Interop.Excel का उपयोग कर सकते हैं;

http://support.microsoft.com/kb/302084

+2

क्लाइंट मशीन में, एक्सेल स्थापित नहीं किया जा सकता है। यही कारण है कि, मैं ओपनएक्सएमएल प्रारूप जैसे वैकल्पिक समाधान की तलाश में हूं। धन्यवाद। –

+0

एक ही समाधान की तलाश में –

+0

बात यह है कि यदि आपको स्प्रेडशीट को .xls के अलावा किसी प्रारूप में सहेजने की आवश्यकता है तो आप वास्तव में एक्सेल स्प्रैडशीट को पढ़ना नहीं चाहते हैं और अधिक सरल समाधान उपलब्ध हो जाएंगे- बोग मानक सीएसवी । –

0

कनेक्शन स्ट्रिंग से \ निकालें। आप नीचे दे सकते हैं।

conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+filepath.ToString() + ";Extended Properties=Excel 12.0 Xml;");