2016-10-05 60 views

回答

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行的「表」? –

相關問題