2016-10-10 7 views
3

データをExcelからデータベースにインポートする必要があります。
しかし、それは私にエラーを与えます。 "位置0には行がない。"その間に、8行目の "TABLE"の代わりにテーブル名を置き換えるべきですか?以下はExcelからC#のデータベースにデータをインポートする

は私のコードです:

public static DataTable ReadExcelWithoutOffice(string filePath) 
{ 
    var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;TypeGuessRows=0;FirstRowHasNames=true;ImportMixedTypes=Text\""; ; 
    using (var conn = new OleDbConnection(connectionString)) 
    { 
     conn.Open(); 

     var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); 
     using (var cmd = conn.CreateCommand()) 
     { 
      cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] "; 

      var adapter = new OleDbDataAdapter(cmd); 
      var ds = new DataSet(); 
      adapter.Fill(ds); 
      return ds.Tables[0]; 
     } 
    } 
} 
+1

http://stackoverflow.com/questions/14796454/import-excel-sheet-using-jet-oledb-4-0-setting-first-row-as-column-name – A3006

+0

チェックした場合任意のデータを返し、次の操作に進むクエリ –

+0

Excelファイルには何枚のシートがありますか? ExcelのUIでこれらのシートが表示されている順序でこれらのシートを取得する保証はありません – Steve

答えて

1

は、あなたの答えありがとうございました。 私は私の問題 を解決するためにいくつかの他の方法を見つけたここに私のコードは次のとおりです。

  System.Data.OleDb.OleDbConnection MyConnection; 
      System.Data.DataSet DtSet; 
      System.Data.OleDb.OleDbDataAdapter MyCommand; 
      MyConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\C# Projects\\ex.xlsx';Extended Properties=Excel 8.0;"); 
      MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection); 
      MyCommand.TableMappings.Add("tbl_info", "tbl_info"); 
      DtSet = new System.Data.DataSet(); 
      MyCommand.Fill(DtSet); 
      dgv.DataSource = DtSet.Tables[0]; 
      MyConnection.Close(); 

出典:このリンクRead and Import Excel File into DataSet

0

チェックアウト。

Reading Excel files from C#

だから、それはこのようなものです。

のMicrosoft Jetを使用する:まず、接続

string Con2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
filename + @";Extended Properties='Excel 12.0;IMEX=1'"; 
System.Data.OleDb.OleDbConnection ExcelConnection = 
new System.Data.OleDb.OleDbConnection(Con2); 

を作成次にような何かを...

DataSet ds = new DataSet(); 

// Create OleDbCommand object and select data from worksheet TABNAME 
OleDbCommand cmd_hulpkostenplaatsen = new OleDbCommand("SELECT * FROM [TABNAME$]", ExcelConnection); 
     OleDbDataAdapter oleda_hulpkostenplaatsen = new OleDbDataAdapter(); 
     oleda_hulpkostenplaatsen.SelectCommand = cmd_hulpkostenplaatsen; 
     oleda_hulpkostenplaatsen.Fill(ds, "HULPKOSTENPLAATSEN"); 

     foreach (DataRow row in ds.Tables["HULPKOSTENPLAATSEN"].Rows) 
     { 
     } 

このリンクは、あまりにも便利です。

http://www.c-sharpcorner.com/blogs/import-excel-data-to-database-using-c-sharp1

関連する問題