2016-04-29 14 views
0

Ich versuche, Excel-Daten zur Datenbank hinzuzufügen. Ich kann es mit dem Blattnamen machen, aber es beschränkt den Benutzer, die App zu verwenden, also möchte ich, dass der Benutzer eine Excel-Datei mit einem beliebigen Blattnamen hochladen kann.C# Excel zu OleDB ohne Blattname

Dies ist mein Code:

public static DataSet ReadExcelFile(string sheetName, string path) 
{ 
    using (OleDbConnection conn = new OleDbConnection()) 
    { 
     DataSet ds = new DataSet(); 
     string Import_FileName = path; 
     string fileExtension = Path.GetExtension(Import_FileName); 

     if (fileExtension == ".xls") 
      conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 8.0;HDR=YES;'"; 

     if (fileExtension == ".xlsx") 
      conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;'"; 

     using (OleDbCommand comm = new OleDbCommand()) 
     { 
      comm.CommandText = "Select * from [" + sheetName + "$]"; 
      comm.Connection = conn; 

      using (OleDbDataAdapter da = new OleDbDataAdapter()) 
      { 
       da.SelectCommand = comm; 
       da.Fill(ds, "Table"); 
       return ds; 
      } 
     } 
    } 
} 

Wie kann ich Excel Daten in die Datenbank mit jedem Blattnamen laden?

Vielen Dank im Voraus

+0

Für mich ist Ihre Anfrage unklar, Excel-Dateien haben immer Blätter, was möchten Sie tun? Nimm Daten nur vom ersten Blatt? Iterate jedes Blatt? –

+0

Ich meine, denke, dass ich zwei Excel-Dateien habe, einer von ihnen Blattname als sheet1 onether hat Blattname sheet2, in meinem Code kann ich beide XML-Daten zur Datenbank hinzufügen –

+0

comm.CommandText = "Select * from [" + Blattname + "$]"; Blattname kann eine beliebige Zeichenfolge sein –

Antwort

0

In meinem Fall verwenden Microsoft.Office.Interop.Excel Namespace Sheetname bildet Excel-Datei zuerst zu lesen.

Excel.Application MyApp = new Excel.Application(); 
MyApp.Visible = false; 

Excel.Workbooks MyBooks = MyApp.Workbooks; 
Excel.Workbook MyBook = MyBooks.Open(excelFilePath); 
Excel.Worksheet XlsDb = MyBook.Sheets[1] as Excel.Worksheet; 

string sheetName = XlsDb.Name; 
DataSet excelDataSet = ReadExcelFile(sheetname, path); 

nachdem Sie Sheetname haben, vergessen Sie nicht, Excel zu schließen, dass Sie durch den Code oben geöffnet haben (Sie können sehen, dass sie Excel Aufgabe in Taskmanager haben, wenn Sie es nicht in der Nähe. Auch Ihr Programm ist bereits geschlossen).

MyBook.Close(0); 
MyApp.Quit(); 
Marshal.ReleaseComObject(XlsDb); 
Marshal.ReleaseComObject(MyBook); 
Marshal.ReleaseComObject(MyBooks); 
Marshal.ReleaseComObject(MyApp); 
GC.Collect(); 
GC.WaitForPendingFinalizers(); 
Verwandte Themen