C # से एक्सेल फाइल पढ़ना


233

क्या सी # प्रोग्राम से सीधे एक्सेल फाइल (.xls) पढ़ने के लिए एक स्वतंत्र या ओपन सोर्स लाइब्रेरी है?

यह बहुत फैंसी होने की जरूरत नहीं है, बस एक वर्कशीट का चयन करना है और डेटा को स्ट्रिंग के रूप में पढ़ना है। अब तक, मैं एक्सेल के यूनिकोड पाठ फ़ंक्शन को निर्यात का उपयोग कर रहा हूं, और परिणामस्वरूप (टैब-सीमांकित) फ़ाइल को पार्स कर रहा हूं, लेकिन मैं मैनुअल चरण को समाप्त करना चाहूंगा।

जवाबों:


153
var fileName = string.Format("{0}\\fileNameHere", Directory.GetCurrentDirectory());
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);

var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();

adapter.Fill(ds, "anyNameHere");

DataTable data = ds.Tables["anyNameHere"];

यह वही है जो मैं आमतौर पर उपयोग करता हूं। यह थोड़ा अलग है क्योंकि मैं आमतौर पर तालिकाओं के संपादन पर एक असेंबल () चिपकाता हूं:

var data = ds.Tables["anyNameHere"].AsEnumerable();

क्योंकि यह मुझे खेतों से मिलने वाली संरचनाओं को खोजने और बनाने के लिए LINQ का उपयोग करता है।

var query = data.Where(x => x.Field<string>("phoneNumber") != string.Empty).Select(x =>
                new MyContact
                    {
                        firstName= x.Field<string>("First Name"),
                        lastName = x.Field<string>("Last Name"),
                        phoneNumber =x.Field<string>("Phone Number"),
                    });

यदि ऐसा लगता है कि इस दृष्टिकोण का चयन करें स्तंभ के डेटा प्रकार का अनुमान लगाने की कोशिश करता है और उस अनुमानित डेटा प्रकार पर बल देता है। उदाहरण के लिए, यदि आपके पास ज्यादातर दोहरे मान वाले स्तंभ हैं, तो यह आपको x.Field <string> से गुजरने के लिए पसंद नहीं करेगा, लेकिन x.Field <double> की अपेक्षा करता है। क्या ये सच है?
केविन ले - खन्नले

1
बस इसे MSDN पर देखा। ऐसा लगता है कि <T> का उपयोग केवल कॉलम में सामग्री को एक प्रकार में डालने का प्रयास करने के लिए किया जाता है। इस उदाहरण में और स्तंभों में डेटा को केवल तार में डालना। यदि आप एक डबल चाहते थे तो आपको double.Parse (x.Field <string> ("Cost") या ऐसा कुछ कॉल करने की आवश्यकता होगी। फ़ील्ड DataRow के लिए एक विस्तार विधि है और ऐसा लगता है कि कोई गैर सामान्य संस्करण नहीं हैं।
रॉबिन रॉबिन्सन

क्या कोई Double.Parse जोड़कर Linq क्वेरी को धीमा कर देता है?
अनाम टाइप

23
ध्यान दें कि यदि आप पढ़ रहे हैं xlsx, तो आपको इस कनेक्शन स्ट्रिंग का उपयोग करने की आवश्यकता है:string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", fileName)
Andreas Grech

7
अफसोस की बात है कि Jet.OLEDB ड्राइवर 64-बिट संगत नहीं है; आपको किसी भी सीपीयू के बजाय x86 को लक्षित करने के लिए स्विच करना होगा (यदि आप अभी भी इस विधि से आगे बढ़ना चाहते हैं)। वैकल्पिक रूप से 64-बिट ACE ड्राइवर स्थापित करें और इस ड्राइवर का उपयोग करने के लिए कॉन स्ट्रिंग बदलें (जैसा कि एंड्रियास द्वारा इंगित किया गया है) - microsoft.com/en-us/download/…
डंकन

83

यदि यह एक्सेल फ़ाइल में निहित सरल डेटा है तो आप ADO.NET के माध्यम से डेटा पढ़ सकते हैं। यहाँ सूचीबद्ध तार देखें:

http://www.connectionstrings.com/?carrier=excel2007 या http://www.connectionstrings.com/?carrier=excel

-Ryan

अपडेट: फिर आप वर्कशीट को कुछ इस तरह से पढ़ सकते हैं select * from [Sheet1$]


1
यह रास्ता अब तक का सबसे तेज है।
स्टिंगजैक

17
बेशक यह सच नहीं है, कंजूस। आपको सभी डेटा के माध्यम से झारना है और भद्दा डीबी कोड (हाथ से अपने मॉडल, गुणों के लिए मैप कॉलम, याददा यारदा) लिखना है। सबसे तेज़ तरीका यह है कि कुछ अन्य गरीब एसओबी आपके लिए ऐसा करें । इसलिए लोग नीचे से ऊपर तक सब कुछ लिखने के बजाय चौखटे का इस्तेमाल करते हैं।

12
बेकार की विधि! पढ़े जाने पर टेक्स्ट कॉलम को 255 अक्षरों में विभाजित करता है। सावधान रहें! देखें: stackoverflow.com/questions/1519288/… ACE इंजन एक ही काम करता है!
त्रिवेंको

5
ध्यान रखें कि Exel से डेटा पढ़ने के लिए ADO.NET का उपयोग करने के लिए Microsoft Access या Microsoft Access डेटाबेस इंजन Redistributable की आवश्यकता होती है।
जिहटकी

3
ड्राइवर पहले कई पंक्तियों के आधार पर कॉलम के प्रकारों पर भी अनुमान लगाएगा। यदि आपके पास एक ऐसा स्तंभ है जो पहली पंक्तियों में पूर्णांक की तरह दिखता है, तो आप एक गैर-पूर्णांक (जैसे एक फ्लोट, एक स्ट्रिंग) को हिट करते समय एक त्रुटि का सामना करेंगे
ब्रायन लो

27

ADO.NET दृष्टिकोण त्वरित और आसान है, लेकिन इसमें कुछ क्वर्क्स हैं जिनके बारे में आपको जानकारी होनी चाहिए, विशेष रूप से डेटाटेप्स को कैसे हैंडल किया जाता है।

यह उत्कृष्ट लेख आपको कुछ सामान्य नुकसान से बचने में मदद करेगा: http://blog.lab49.com/archives/196


आपने मेरे प्रश्न का उत्तर दिया (ऊपर टिप्पणी के रूप में)।
केविन ले - खन्नले

22

यह वही है जो मैंने Excel 2003 के लिए उपयोग किया था:

Dictionary<string, string> props = new Dictionary<string, string>();
props["Provider"] = "Microsoft.Jet.OLEDB.4.0";
props["Data Source"] = repFile;
props["Extended Properties"] = "Excel 8.0";

StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<string, string> prop in props)
{
    sb.Append(prop.Key);
    sb.Append('=');
    sb.Append(prop.Value);
    sb.Append(';');
}
string properties = sb.ToString();

using (OleDbConnection conn = new OleDbConnection(properties))
{
    conn.Open();
    DataSet ds = new DataSet();
    string columns = String.Join(",", columnNames.ToArray());
    using (OleDbDataAdapter da = new OleDbDataAdapter(
        "SELECT " + columns + " FROM [" + worksheet + "$]", conn))
    {
        DataTable dt = new DataTable(tableName);
        da.Fill(dt);
        ds.Tables.Add(dt);
    }
}

2
वर्कशीट परिभाषित नहीं है ... मुझे स्पष्ट रूप से सब कुछ परिभाषित करने के बाद थोड़ा अजीब लगता है।
जेरेमी होलोवेकस 15

21

एक्सेल डेटा रीडर के बारे में कैसे?

http://exceldatareader.codeplex.com/

मैंने इसका उपयोग क्रोध में, उत्पादन वातावरण में, विभिन्न प्रकार की एक्सेल फाइलों से SQL सर्वर कॉम्पैक्ट में बड़ी मात्रा में डेटा खींचने के लिए किया है। यह बहुत अच्छा काम करता है और यह मजबूत है।


2
मैं दूसरी एक्सेल डेटा रीडर हूँ; इसने अविश्वसनीय रूप से उपयोगी एक्सेल डेटा ड्रिवेन टेस्ट लाइब्रेरी का भी नेतृत्व किया है, जो एक्सेल स्प्रेडशीट का हास्यास्पद रूप से आसान उपयोग करके डेटा-चालित परीक्षण करने के लिए NUnit 2.5 के TestCaseSource विशेषता का उपयोग करता है। बस इस बात से सावधान रहें कि Resharper अभी तक TestCaseSource का समर्थन नहीं करता है, इसलिए आपको NUnit धावक का उपयोग करना होगा।
डेविड कीवेनी

दुर्भाग्य से, इस पुस्तकालय के साथ कुछ समस्याएं हैं जिनका हमने अभी सामना किया है। सबसे पहले हमारे पास कुछ मुद्रा क्षेत्र हैं जो तारीखों के रूप में सामने आ रहे हैं। दूसरी बात यह है कि अगर वर्कबुक में कोई खाली शीट है तो यह दुर्घटनाग्रस्त हो जाती है। इसलिए, हालांकि यह एकीकृत करना बहुत आसान था कि अब हम इस पुस्तकालय का उपयोग करने के लिए पुनर्मूल्यांकन कर रहे हैं या नहीं। यह सक्रिय रूप से विकसित होने के लिए प्रतीत नहीं होता है।
इयान

यह xlsx फ़ाइल में कुछ वैकल्पिक तत्वों की मौजूदगी को भी मानता है जिसके कारण यदि वे अनुपस्थित हैं तो डेटा को पढ़ने में विफल हो सकते हैं।
रिचीहिंडल

हमें SQL सर्वर रिपोर्टिंग सेवाओं से आने वाली एक्सेल फ़ाइलों की समस्या है। वे सिर्फ काम नहीं करते हैं, जब तक कि आप उन्हें नहीं खोलते हैं और उन्हें बचाते हैं (यहां तक ​​कि एकजुट नहीं) @RichieHindle: आप किन वैकल्पिक तत्वों के बारे में बात कर रहे हैं (उम्मीद है कि यह मेरी SSRS एक्सेल फ़ाइलों के साथ मेरी मदद कर सकता है)?
पीटर

@ पेटर: मुझे लगता है कि यह एक गायब <dimension>तत्व <worksheet>था जो मेरे लिए परेशानी का कारण था।
रिचीहिंडल

16

यहां कुछ कोड मैंने कुछ साल पहले .NET 1.1 का उपयोग करके C # में लिखे थे। निश्चित नहीं है कि यह वही होगा जो आपको चाहिए (और मेरा सबसे अच्छा कोड नहीं हो सकता है :))।

using System;
using System.Data;
using System.Data.OleDb;

namespace ExportExcelToAccess
{
    /// <summary>
    /// Summary description for ExcelHelper.
    /// </summary>
    public sealed class ExcelHelper
    {
        private const string CONNECTION_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<FILENAME>;Extended Properties=\"Excel 8.0;HDR=Yes;\";";

        public static DataTable GetDataTableFromExcelFile(string fullFileName, ref string sheetName)
        {
            OleDbConnection objConnection = new OleDbConnection();
            objConnection = new OleDbConnection(CONNECTION_STRING.Replace("<FILENAME>", fullFileName));
            DataSet dsImport = new DataSet();

            try
            {
                objConnection.Open();

                DataTable dtSchema = objConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                if( (null == dtSchema) || ( dtSchema.Rows.Count <= 0 ) )
                {
                    //raise exception if needed
                }

                if( (null != sheetName) && (0 != sheetName.Length))
                {
                    if( !CheckIfSheetNameExists(sheetName, dtSchema) )
                    {
                        //raise exception if needed
                    }
                }
                else
                {
                    //Reading the first sheet name from the Excel file.
                    sheetName = dtSchema.Rows[0]["TABLE_NAME"].ToString();
                }

                new OleDbDataAdapter("SELECT * FROM [" + sheetName + "]", objConnection ).Fill(dsImport);
            }
            catch (Exception)
            {
                //raise exception if needed
            }
            finally
            {
                // Clean up.
                if(objConnection != null)
                {
                    objConnection.Close();
                    objConnection.Dispose();
                }
            }


            return dsImport.Tables[0];
            #region Commented code for importing data from CSV file.
            //              string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=" + System.IO.Path.GetDirectoryName(fullFileName) +";" +"Extended Properties=\"Text;HDR=YES;FMT=Delimited\"";
            //
            //              System.Data.OleDb.OleDbConnection conText = new System.Data.OleDb.OleDbConnection(strConnectionString);
            //              new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM " + System.IO.Path.GetFileName(fullFileName).Replace(".", "#"), conText).Fill(dsImport);
            //              return dsImport.Tables[0];

            #endregion
        }

        /// <summary>
        /// This method checks if the user entered sheetName exists in the Schema Table
        /// </summary>
        /// <param name="sheetName">Sheet name to be verified</param>
        /// <param name="dtSchema">schema table </param>
        private static bool CheckIfSheetNameExists(string sheetName, DataTable dtSchema)
        {
            foreach(DataRow dataRow in dtSchema.Rows)
            {
                if( sheetName == dataRow["TABLE_NAME"].ToString() )
                {
                    return true;
                }   
            }
            return false;
        }
    }
}

अधिक चेरियन सहमत नहीं हो सके। यह कोड कई साल पुराना है ... इससे पहले कि मैं भी Resharper के साथ कुशल था :)
Hitec

2
कोड बदसूरत है, लेकिन यह दिखाता है कि शीट नाम कैसे प्राप्त करें, महान!
सैम

15

Koogra C # में लिखा गया एक ओपन-सोर्स घटक है जो एक्सेल फाइलों को पढ़ता और लिखता है।


नहीं करने के लिए, कहते हैं की तुलना में किसी भी अधिक विशेष रूप से सक्रिय लग रही है,, NPOI
डेविड बर्टन

12

जब आपने विशेष रूप से .xls के लिए पूछा था, पुराने फ़ाइल स्वरूपों को खोलते हुए, OpenXML प्रारूपों (जैसे xlsx) के लिए, मैं अत्यधिक रूप से OpenXML SDK ( http://msdn.microsoft.com/en-us/library/bb448854.aspx ) की सिफारिश करता हूं


8

मैंने थोड़ी देर पहले C # में Excel फ़ाइलों से बहुत कुछ पढ़ा था, और हमने दो दृष्टिकोणों का उपयोग किया:

  • COM API, जहाँ आप एक्सेल की वस्तुओं को सीधे एक्सेस करते हैं और विधियों और गुणों के माध्यम से उनमें हेरफेर करते हैं
  • ODBC ड्राइवर जो डेटाबेस की तरह Excel का उपयोग करने की अनुमति देता है।

उत्तरार्द्ध दृष्टिकोण बहुत तेज था : 20 स्तंभों और 200 लाइनों के साथ एक बड़ी तालिका पढ़ना, COM के माध्यम से 30 सेकंड और ओडीबीसी के माध्यम से आधा सेकंड लगेगा। इसलिए मैं डेटाबेस दृष्टिकोण की सिफारिश करूंगा यदि आपको सभी डेटा की आवश्यकता है।

चीयर्स,

कार्ल


6

ExcelMapper एक ओपन सोर्स टूल ( http://code.google.com/p/excelmapper/ ) है जिसका उपयोग एक्सेल वर्कशीट को स्ट्रॉन्गली टाइप्ड ऑब्जेक्ट के रूप में पढ़ने के लिए किया जा सकता है। यह xls और xlsx दोनों स्वरूपों का समर्थन करता है।


6

मैं .NET के साथ xls / xlsx फ़ाइल को पढ़ने के लिए एक सरल विधि दिखाना चाहता हूं। मुझे उम्मीद है कि निम्नलिखित आपके लिए उपयोगी होगा।

 निजी डेटाटेबल ReadExcelToTable (स्ट्रिंग पथ)    
 {

     //संबंध तार

     string constring = "प्रदाता = Microsoft.ACE.OLEDB.12.0; डेटा स्रोत =" पथ + "; विस्तारित गुण = 'Excel 8.0; HDR = NO; IMEX = 1';";  
     //वही नाम 
     // string constring = प्रदाता = Microsoft.JET.OLEDB.4.0; डेटा स्रोत = "+ पथ + //"; विस्तारित गुण = 'Excel 8.0; HDR = NO; IMEX = 1'; "; 

     का उपयोग कर (OleDbConnection con = new OleDbConnection (कॉनस्ट्रिंग))
     {
        conn.Open ();
        // सभी पत्रक नाम प्राप्त करें
        डेटाटेबल शीट्सनाम = con.GetOleDbSchemaTable (OleDbSchemaGuid.Tables, नई ऑब्जेक्ट] [] {अशक्त, अशक्त, अशक्त, "तालिका"};  

        // पहली शीट नाम प्राप्त करें
        string firstSheetName = sheetName.Rows [0] [2] .ToString (); 

        //क्वेरी स्ट्रिंग 
        string sql = string.Format ("Select * FROM [{0}]", firstSheetName); 
        OleDbDataAdapter ada = new OleDbDataAdapter (sql, constring);
        डेटासेट सेट = नया डेटासेट ();
        ada.Fill (सेट);
        वापसी सेट। टेबल्स [0];   
   }
 }

कोड लेख से है: http://www.c-sharpcorner.com/uploadfile/d2dcfc/read-excel-file-with-net/ । आप इससे अधिक जानकारी प्राप्त कर सकते हैं।


2
यह सहायक था , विशेष रूप से शीटनाम पढ़ने के बारे में हिस्सा।
मार्टिन्स्टेकली

4

मुक्त नहीं है, लेकिन नवीनतम कार्यालय के साथ एक बहुत अच्छा स्वचालन है। नेट एपीआई। (लंबे समय से एक एपीआई रहा है, लेकिन बुरा COM था) आप सभी चाहते हैं / कोड में सब कुछ कर सकते हैं, जबकि कार्यालय एप्लिकेशन एक छिपी हुई पृष्ठभूमि प्रक्रिया बनी हुई है।


3
@ अनाम-प्रकार मैंने प्रश्न पढ़ा था और एक वांछित ओएसएस कार्यान्वयन के लिए एक सहायक विकल्प की पेशकश कर रहा था ... क्योंकि, ठीक है, मुझे पूरा यकीन था कि कुछ भी उपलब्ध नहीं था। और, स्वीकृत जवाब से देखते हुए, कार्यालय स्थापित होने की आवश्यकता एक मुद्दा नहीं है।
२०:२० बजे

3

मुझे माफ कर दो अगर मैं यहां से ऑफ-बेस हूं, लेकिन क्या यह ऑफिस पीआईए के लिए नहीं है?


5
हां, लेकिन इसमें Excel.Application उदाहरण बनाना, xls फ़ाइल लोड करना आदि शामिल होगा। यदि आवश्यकता विशुद्ध रूप से फ़ाइल के कुछ डेटा को पढ़ने की है, तो वर्णित ADO.NET विधियों में से एक का उपयोग करना बहुत आसान और कहीं अधिक हल्का है। अन्य उत्तरों में।
एडम राल्फ

बहुत धीमी गति से, कार्यालय पीआईए को आधार रेखा के रूप में उपयोग करते हुए, बाकी सब कुछ तेज है - यहां तक ​​कि सिर्फ एक ऑब्जेक्ट सरणी का उपयोग करके ।Value2 संपत्ति से। जो अभी भी पीआईए का उपयोग कर रहा है।
बेनामी टाइप

3

हाल ही में, आंशिक रूप से LINQ में बेहतर पाने के लिए .... मैं एक्सेल के स्वचालन एपीआई का उपयोग कर रहा हूँ फ़ाइल को XML स्प्रेडशीट के रूप में सहेजने के लिए और फिर उस प्रक्रिया को लिनक्यू का XML में उपयोग करके प्राप्त करें।


मुझे संदेह है कि आप इसे एक्सेल से बचा सकते हैं, लेकिन संकलक के साथ आदमी से नहीं ... जैसे कुछ भी ... यह सिर्फ बाइट्स है।
केनी

@gsvirdi, Excel फ़ाइल सुरक्षा पर एक अलग प्रश्न पोस्ट करें, यह प्रश्न प्रदर्शन पर है।
बेनामी टाइप

3

.NET के लिए स्प्रेडशीटगियर .NET के लिए एक्सेल संगत स्प्रेडशीट घटक है। आप देख सकते हैं कि हमारे ग्राहक हमारे उत्पाद पृष्ठ के दाईं ओर प्रदर्शन के बारे में क्या कहते हैं । आप इसे स्वतंत्र, पूरी तरह से कार्यात्मक मूल्यांकन के साथ स्वयं आज़मा सकते हैं ।


3

SmartXLS एक अन्य एक्सेल स्प्रेडशीट घटक है जो एक्सेल चार्ट्स, फॉर्मूला इंजन की अधिकांश विशेषताओं का समर्थन करता है, और एक्सेल 2007 ओपनएक्सएमएल प्रारूप को पढ़ / लिख सकता है।



2

मैं FileHelpers Library की सिफारिश करता हूं, जो EXCEL से डेटा आयात करने / निर्यात करने के लिए .NET लाइब्रेरी का उपयोग करने के लिए एक नि: शुल्क और आसान है, फाइलों, तारों या धाराओं में तय लंबाई या सीमांकित + अधिक।

एक्सेल डेटा लिंक दस्तावेज़ीकरण अनुभाग http://filehelpers.sourceforge.net/example_exceldatalink.html


1
मैं आपको निराश नहीं करूंगा, लेकिन मैंने हाल ही में FileHelpers का उपयोग करना शुरू किया और इस बात से हैरान था कि ... यह कितना भद्दा है। उदाहरण के लिए, एक csv में प्रॉपर्टीज में कॉलम मैप करने का एकमात्र तरीका ... मुझे माफ करना, मॉडल के FIELDS, कॉलम के क्रम में फ़ील्ड बनाना है । मैं तुम्हारे बारे में नहीं जानता, लेकिन मैं अपने f8 फ्रेमवर्क के सबसे केंद्रीय डिजाइन विचारों में से एक के लिए कंपाइलर के एक क्विक पर भरोसा नहीं करूंगा।

2

आप इस खुले स्रोत समाधान का उपयोग करने का प्रयास कर सकते हैं जो एक्सेल के साथ बहुत अधिक क्लीनर से निपटने का काम करता है।

http://excelwrapperdotnet.codeplex.com/


2

स्प्रेडशीटगियर कमाल का है। हाँ यह एक खर्च है, लेकिन इन अन्य समाधानों के साथ इसकी तुलना में, यह लागत के लायक है। यह तेज, विश्वसनीय, बहुत व्यापक है, और मुझे डेढ़ साल से अधिक समय के लिए अपने फुलटाइम सॉफ्टवेयर नौकरी में इस उत्पाद का उपयोग करने के बाद कहना है, उनका ग्राहक समर्थन शानदार है!


जब पढ़ने और लिखने के लिए एक्सेल में बहुत सारे सरल और प्रभावी तरीके (मुफ्त में) होते हैं, तो इसे सही ठहराना मुश्किल है।
बेनामी टाइप

2

समाधान है कि हम इस्तेमाल किया, की जरूरत है:

  • एक्सेल निर्मित फ़ाइलों को पढ़ने / लिखने की अनुमति दें
  • प्रदर्शन में तेज़ रहें (COMs का उपयोग करना पसंद नहीं)
  • एमएस ऑफ़िस इंडिपेंडेंट रहें (एमएस ऑफ़िस स्थापित किए बिना क्लाइंट्स के लिए उपयोग करने योग्य होना चाहिए)
  • रहो नि: शुल्क या मुक्त स्रोत (लेकिन सक्रिय रूप से विकसित)

कई विकल्प हैं, लेकिन हमने NPoi (जावा के लंबे मौजूदा पोई ओपन सोर्स प्रोजेक्ट का .NET पोर्ट ) को सबसे अच्छा माना: http://npoi.codeplex.com/

यह .doc और .ppt फ़ाइल स्वरूपों के साथ काम करने की भी अनुमति देता है


2

अगर यह सिर्फ सारणीबद्ध डेटा है। मैं मार्कोस मेली द्वारा फाइल डेटा हेल्पर्स की सिफारिश करूंगा जिन्हें यहां डाउनलोड किया जा सकता है



1

आप एक एक्सेल स्प्रेडशीट लिख सकते हैं जो किसी दिए गए एक्सेल स्प्रेडशीट को लोड करता है और इसे सीएसवी (मैन्युअल रूप से करने के बजाय) के रूप में बचाता है।

तब आप c # से उसे स्वचालित कर सकते थे।

और सीएसवी में एक बार, सी # कार्यक्रम को टटोल सकता है।

(यह भी, अगर कोई आपको एक्सेल में प्रोग्राम करने के लिए कहता है, तो यह दिखावा करना सबसे अच्छा है कि आप यह नहीं जानते कि कैसे)

(संपादित करें: आह हां, लूट और रयान दोनों सही हैं)


1

मुझे पता है कि लोग इस उद्देश्य के लिए एक एक्सेल "एक्सटेंशन" बना रहे हैं।
आप कम या ज्यादा एक्सेल में एक बटन बनाते हैं जो कहता है "प्रोग्राम एक्स को निर्यात करें", और फिर प्रोग्राम को पढ़ने के लिए एक प्रारूप में डेटा को निर्यात और बंद करें।

http://msdn.microsoft.com/en-us/library/ms186213.aspx शुरू करने के लिए एक अच्छी जगह होनी चाहिए।

सौभाग्य


1

बस एक त्वरित डेमो प्रोजेक्ट किया जो कुछ एक्सेल फाइलों को प्रबंधित करने की आवश्यकता है। GemBox सॉफ्टवेयर से .NET घटक मेरी जरूरतों के लिए पर्याप्त था। यह कुछ सीमाओं के साथ एक मुफ्त संस्करण है।

http://www.gemboxsoftware.com/GBSpreadsheet.htm


FYI करें: मैंने इसकी कोशिश की और यह एक एन्क्रिप्टेड फ़ाइल को पढ़ने में सक्षम होने की मेरी आवश्यकता को पूरा नहीं करता है।
चाड

1

एक्सेल पैकेज एक्सेल 2007 फाइलों को पढ़ने / लिखने के लिए एक ओपन-सोर्स (जीपीएल) घटक है। मैंने इसे एक छोटे प्रोजेक्ट पर इस्तेमाल किया है, और एपीआई सीधा है। केवल XLSX (Excel 200 &) के साथ काम करता है, XLS के साथ नहीं।

स्रोत कोड भी अच्छी तरह से संगठित और आसपास आसान लगता है (यदि आपको कार्यक्षमता का विस्तार करने या मेरे द्वारा किए गए मामूली मुद्दों को ठीक करने की आवश्यकता है)।

सबसे पहले, मैंने ADO.Net (एक्सेल कनेक्शन स्ट्रिंग) दृष्टिकोण की कोशिश की, लेकिन यह गंदा हैक के साथ भरा हुआ था - उदाहरण के लिए यदि दूसरी पंक्ति में एक संख्या होती है, तो यह नीचे दिए गए कॉलम में सभी फ़ील्डों के लिए वापस आ जाएगी और चुपचाप किसी भी डेटा को छोड़ देगा यह ठीक नहीं है।


1

हम बड़ी प्रणालियों में क्लोज्डएक्सएमएल का उपयोग करते हैं।

  • नि: शुल्क
  • इन्सटाल करना आसान
  • सीधे आगे कोडिंग
  • बहुत उत्तरदायी समर्थन
  • डेवलपर टीम अत्यधिक नए सुझावों के लिए खुली है। अक्सर नई सुविधाएँ और बग फिक्स एक ही सप्ताह में लागू किए जाते हैं

1

Take.ioस्प्रेडशीट आपके लिए यह काम करेगी, और बिना किसी शुल्क के। जरा इस पर एक नजर डालिए ।


यह वास्तव में बहुत कम पुस्तकालय है। यह बस स्ट्रिंग की सूचियों की सूची में सब कुछ बदल देता है, जो उस तरह के काम के लिए ठीक है, जिसके लिए मुझे इसकी आवश्यकता थी।
ड्रूमेट

0

मैं सिर्फ एक डेटासेट में एक .xls स्प्रेडशीट लोड करने के लिए ExcelLibrary का उपयोग करता था। मेरे लिए बहुत अच्छा काम किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.