2012-05-25 44 views
0

我有一個C#程序,我想將Excel文件導入Microsoft SQL Server 2008 R2。使用C#將Excel文件導入到Microsoft SQL Server中

有人可以給我一個鏈接或教程,我可以完全理解如何做到這一點?

我一直在做這個很長一段時間,我真的不知道如何實現這一點。

請幫忙。謝謝。

+0

是你的工作? –

+0

請仔細閱讀此鏈接........ http://www.aspdotnet-suresh.com/2010/09/import-data-from-excel-to-sql-database.html –

回答

6
string excelConnectionString = @"Provider=Microsoft 
.Jet.OLEDB.4.0;Data Source=Book1.xls;Extended 
Properties=""Excel 8.0;HDR=YES;"""; 

// Create Connection to Excel Workbook

我們可以導入Excel到SQL Server這樣

using (OleDbConnection connection = new OleDbConnection(excelConnectionString)){

OleDbCommand command = new OleDbCommand ("Select ID,Data FROM [Data$]", connection);

connection.Open(); 


`// Create DbDataReader to Data Worksheet ` 
using (DbDataReader dr = command.ExecuteReader()) 
{ 
    // SQL Server Connection String 
    string sqlConnectionString = "Data Source=.; 
     Initial Catalog=Test;Integrated Security=True"; 


    // Bulk Copy to SQL Server 
    using (SqlBulkCopy bulkCopy = 
       new SqlBulkCopy(sqlConnectionString)) 
    { 
     bulkCopy.DestinationTableName = "ExcelData"; 
     bulkCopy.WriteToServer(dr); 
    } 
+1

請標記爲回答如果這可以幫助你... – JayOnDotNet

1

我認爲,已經被賦予了最有用的答案。 我不打算描述C#的方式,但rathher給你一個簡單的方法做它沒有C#:

打開你的MS Access,通過ODBC鏈接你的MS SQL數據庫,在Access中打開你的表,並粘貼你的Excel通過複製粘貼(預格式化以匹配表格模式)在那裏記錄。

當您執行一次性數據導入時,這種方式非常快速且非常實用。

3

此代碼也可能對您有所幫助。

private void processExcel(string filename) 
{ 
    filename = Server.MapPath("~/Files/WM-0b23-productsBook.xlsx"); 
    Microsoft.Office.Interop.Excel.Application xlApp; 
    Microsoft.Office.Interop.Excel.Workbook xlWorkBook; 
    Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; 

    var missing = System.Reflection.Missing.Value; 

    xlApp = new Microsoft.Office.Interop.Excel.Application(); 
    xlWorkBook = xlApp.Workbooks.Open(filename, false, true, missing, missing, missing, true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, '\t', false, false, 0, false, true, 0); 
    xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

    Microsoft.Office.Interop.Excel.Range xlRange = xlWorkSheet.UsedRange; 
    Array myValues = (Array)xlRange.Cells.Value2; 

    int vertical = myValues.GetLength(0); 
    int horizontal = myValues.GetLength(1); 

    System.Data.DataTable dt = new System.Data.DataTable(); 

    // must start with index = 1 
    // get header information 
    for (int i = 1; i <= horizontal; i++) 
    { 
     dt.Columns.Add(new DataColumn(myValues.GetValue(1, i).ToString())); 
    } 

    // Get the row information 
    for (int a = 2; a <= vertical; a++) 
    { 
     object[] poop = new object[horizontal]; 
     for (int b = 1; b <= horizontal; b++) 
     { 
      poop[b - 1] = myValues.GetValue(a, b); 
     } 
     DataRow row = dt.NewRow(); 
     row.ItemArray = poop; 
     dt.Rows.Add(row); 
    } 

    // assign table to default data grid view 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 

    xlWorkBook.Close(true, missing, missing); 
    xlApp.Quit(); 

    releaseObject(xlWorkSheet); 
    releaseObject(xlWorkBook); 
    releaseObject(xlApp); 
} 

private void releaseObject(object obj) 
{ 
    try 
    { 
     System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); 
     obj = null; 
    } 
    catch (Exception ex) 
    { 
     obj = null; 
     MessageBox.Show("Unable to release the Object " + ex.ToString()); 
    } 
    finally 
    { 
     GC.Collect(); 
    } 
} 
+0

嗨,這是有幫助的,但是當我導入時出錯,有時數據類型不匹配,即使它們相同/相似。 – transformer

相關問題