2016-10-05 5 views
0

У меня есть три столбца в листе Excel, такие как id, name, family.
Я использую LINQ, и мне нужно, чтобы импортировать данные из Excel в базу данных с кодированием инструкции, у меня есть 6500 записей в листе ExcelКак импортировать данные из листа Excel в базу данных в C# с помощью LINQ?

ответ

0

Спасибо всем за ваш ответ.
Я нашел свою проблему. Вот код:

 string pach = @"D:\C# Projects\ex.xlsx"; 
     var excelData = new ExcelQueryFactory(pach); 
     var data = from x in excelData.Worksheet<xlsdata>("MySheet") 
        select x; 
     DataClassesDataContext db = new DataClassesDataContext(); 
     foreach (var d in data) 
     { 
      db.tbl_infos.InsertOnSubmit(new tbl_info 
      { 
       id = d.id, 
       name = d.name, 
       family = d.family 
      }); 
     } 
     db.SubmitChanges(); 
0

Вам нужно будет импортировать и ссылки OpenXML, откройте листы, лист, лист, IIRC - затем проанализируйте свои столбцы в строки.

OpenXML

Затем создайте адаптер данных SQL, и все это, чтобы использовать либо ConnectionString или SQLConnection, запустить параметризованный запрос, и это в базе данных.

SQL Example

1

Вы можете использовать ниже код, чтобы получить все данные, а затем вы можете преобразовать форму DataTable в список. для примера ниже, чтобы работать, вы должны Microsoft Access Database Engine 2010 Redistributable должны быть установлены

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]; 
      } 
     } 
    } 
+0

Спасибо за ваш ответ. Но это дает мне ошибку. "Там нет строки в позиции 0." в строке 11. В то же время, следует ли мне изменить сумму «ТАБЛИЦА» в строке 8? –