给定的ColumnMapping与源或目标中的任何列都不匹配,以获取大量数据

时间:2019-09-02 19:56:06

标签: c# asp.net oledb oledbconnection oledbdataadapter

我在绑定网格上出现错误

string path = string.Concat(Server.MapPath("~/UploadFile/" + FileUpload1.FileName));
FileUpload1.SaveAs(path); 
string excelCS = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path);

using (OleDbConnection con = new OleDbConnection(excelCS))
{
    OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", con);
    con.Open();
    DataTable dt = new DataTable();
    dt.Load(cmd.ExecuteReader());
    // Create DbDataReader to Data Worksheet
    DbDataReader dr = cmd.ExecuteReader();
    // SQL Server Connection String
    string CS = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
    SqlBulkCopy bulkInsert = new SqlBulkCopy(CS);

    bulkInsert.DestinationTableName = "tbl_data";
    for (int i = 0; i < dt.Columns.Count; i++)
    {
         bulkInsert.ColumnMappings.Add(i, i);
    }
    bulkInsert.WriteToServer(dr);
    BindGridView();
    con.Close();
    lblerror.Text = "Your file uploaded successfull"

编辑:

private void BindGridView() 
{ 
    string conString = 
    ConfigurationManager.ConnectionStrings["con"].ConnectionString; 
    SqlConnection con = new SqlConnection(conString); 
    SqlCommand cmd = new SqlCommand("select * from tbl_data", con); 
    con.Open(); 
    gvUpload.DataSource = cmd.ExecuteReader(); 
    gvUpload.DataBind(); 
    con.Close(); 
}

1 个答案:

答案 0 :(得分:0)

好的,尼兹。这是使用您的代码库进行的示例。在适应您的特定情况后,请尝试一下。您已正确检出此question吗?

static void Main(string[] args)
{
    string path = string.Concat(Server.MapPath("~/UploadFile/" + FileUpload1.FileName));
    FileUpload1.SaveAs(path);

    string excelCS = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path);

    using (OleDbConnection con = new OleDbConnection(excelCS))
    {
        DataTable excelData = new DataTable();

        using (OleDbCommand excelSource = new OleDbCommand("select * from [Sheet1$]", con))
        {
            con.Open();
            excelData.Load(excelSource.ExecuteReader());
        }

        // SQL Server Connection String
        string CS = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
        SqlBulkCopy bulkInsert = new SqlBulkCopy(CS);
        bulkInsert.DestinationTableName = "tbl_data";   
        bulkInsert.ColumnMappings.Add(0,0);
        bulkInsert.ColumnMappings.Add(1,1);     

        try
        {
            bulkInsert.WriteToServer(excelData);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }

        con.Close();
        lblerror.Text = "Your file uploaded successfully";
    }
    BindGridView();
}

private static void BindGridView()
{
    string conString = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlCommand cmd = new SqlCommand("select ID, Mail_ID from tbl_data", con))
        {
            con.Open();
            var sqlReader = cmd.ExecuteReader();
            Console.WriteLine("START: Sql Columns");
            foreach (var sqlColumnName in Enumerable.Range(0, sqlReader.FieldCount).Select(sqlReader.GetName))
            {
                Console.WriteLine(sqlColumnName);
            }
            Console.WriteLine("END: Sql Columns");
            gvUpload.DataSource = sqlReader;
            gvUpload.DataBind();
        }
    }
}