WPF。如何将数据从EXCEL插入到sql表(高级)?

时间:2018-03-14 04:53:53

标签: excel wpf sql-server-2014

我的Excel文件包含以下数据:

Name      ID       Contact
---------------------------
John      3        01542954
Smith     6        7450142
Dan       8        5486295

这是我在SQL Server中的表(tblinfo),有两列(CustomerContact)。

我想从

插入数据
  • 名称 - >客户
  • 联络 - >接触

我试着搜索这么多。但他们教导的几乎所有关于Winforms NOT WPF的内容

我正在使用VS 2015,SQL Server 2014,Office 2010

1 个答案:

答案 0 :(得分:0)

使用以下方法从Excel工作表生成DataTable

public static DataTable ConvertExcelToDataTable(string FileName)  
{  
    DataTable dtResult = null;  
    int totalSheet = 0; //No of sheets on excel file  
    using(OleDbConnection objConn = new OleDbConnection(@  
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';"))  
    {  
        objConn.Open();  
        OleDbCommand cmd = new OleDbCommand();  
        OleDbDataAdapter oleda = new OleDbDataAdapter();  
        DataSet ds = new DataSet();  
        DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);  
        string sheetName = string.Empty;  
        if (dt != null)  
        {  
            var tempDataTable = (from dataRow in dt.AsEnumerable()  
            where!dataRow["TABLE_NAME"].ToString().Contains("FilterDatabase")  
            select dataRow).CopyToDataTable();  
            dt = tempDataTable;  
            totalSheet = dt.Rows.Count;  
            sheetName = dt.Rows[0]["TABLE_NAME"].ToString();  
        }  
        cmd.Connection = objConn;  
        cmd.CommandType = CommandType.Text;  
        cmd.CommandText = "SELECT * FROM [" + sheetName + "]";  
        oleda = new OleDbDataAdapter(cmd);  
        oleda.Fill(ds, "excelData");  
        dtResult = ds.Tables["excelData"];  
        objConn.Close();  
        return dtResult; //Returning Dattable  
    }  
} 

使用此DataTable为SQL数据库准备查询。