nar86 Ответов: 1

Экспорт данных excel в таблицу SQL server


Мой код выглядит следующим образом

private void ExcelConn(string FilePath)
        {
            constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", FilePath);
            Econ = new OleDbConnection(constr);
       }


 private void connection()
        {
       sqlconn = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
            con = new SqlConnection(sqlconn);
        }


 private void InsertExcelRecords(string FilePath)
        {
            ExcelConn(FilePath);
            Query = string.Format("select * FROM [{0}]", "Sheet1$");

            OleDbCommand Ecom = new OleDbCommand(Query, Econ);
            Econ.Open();

            DataSet ds = new DataSet();
            OleDbDataAdapter oda = new OleDbDataAdapter(Query, Econ);
            Econ.Close();
            oda.Fill(ds);
            DataTable Exceldt = ds.Tables[0];
            connection();
      
           SqlBulkCopy objbulk = new SqlBulkCopy(con);
           objbulk.DestinationTableName = "tblfarmer";
            
            objbulk.ColumnMappings.Add("farmerctscode", "farmerctscode");
            objbulk.ColumnMappings.Add("farmersapcode", "farmersapcode");
            objbulk.ColumnMappings.Add("farmerseason", "farmerseason");
            objbulk.ColumnMappings.Add("dateofjoinseco", "dateofjoinseco");
            objbulk.ColumnMappings.Add("governmentcode", "governmentcode");
            objbulk.ColumnMappings.Add("firstname", "firstname");
            objbulk.ColumnMappings.Add("lastname", "lastname");
            objbulk.ColumnMappings.Add("surname", "surname");
            objbulk.ColumnMappings.Add("gender", "gender");
            objbulk.ColumnMappings.Add("dateofbirth", "dateofbirth");
            objbulk.ColumnMappings.Add("birthlocation", "birthlocation");
            con.Open();
            objbulk.WriteToServer(Exceldt);
            con.Close();
        }

protected void btnimport_Click(object sender, EventArgs e)
        {
  
           string CurrentFilePath = string.Concat(Server.MapPath("~/masterdata/" + 
           FileUpload1.FileName));
             InsertExcelRecords(CurrentFilePath);
        }

когда я запускаю и выбираю файл и загружаю его, то ошибка отображается следующим образом

Внешняя таблица находится не в ожидаемом формате.

как решить эту ошибку "внешняя таблица не находится в ожидаемом формате".

Что я уже пробовал:

Мой код выглядит следующим образом

private void ExcelConn(string FilePath)
        {
            constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", FilePath);
            Econ = new OleDbConnection(constr);
       }


 private void connection()
        {
       sqlconn = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
            con = new SqlConnection(sqlconn);
        }


 private void InsertExcelRecords(string FilePath)
        {
            ExcelConn(FilePath);
            Query = string.Format("select * FROM [{0}]", "Sheet1$");

            OleDbCommand Ecom = new OleDbCommand(Query, Econ);
            Econ.Open();

            DataSet ds = new DataSet();
            OleDbDataAdapter oda = new OleDbDataAdapter(Query, Econ);
            Econ.Close();
            oda.Fill(ds);
            DataTable Exceldt = ds.Tables[0];
            connection();
      
           SqlBulkCopy objbulk = new SqlBulkCopy(con);
           objbulk.DestinationTableName = "tblfarmer";
            
            objbulk.ColumnMappings.Add("farmerctscode", "farmerctscode");
            objbulk.ColumnMappings.Add("farmersapcode", "farmersapcode");
            objbulk.ColumnMappings.Add("farmerseason", "farmerseason");
            objbulk.ColumnMappings.Add("dateofjoinseco", "dateofjoinseco");
            objbulk.ColumnMappings.Add("governmentcode", "governmentcode");
            objbulk.ColumnMappings.Add("firstname", "firstname");
            objbulk.ColumnMappings.Add("lastname", "lastname");
            objbulk.ColumnMappings.Add("surname", "surname");
            objbulk.ColumnMappings.Add("gender", "gender");
            objbulk.ColumnMappings.Add("dateofbirth", "dateofbirth");
            objbulk.ColumnMappings.Add("birthlocation", "birthlocation");
            con.Open();
            objbulk.WriteToServer(Exceldt);
            con.Close();
        }

protected void btnimport_Click(object sender, EventArgs e)
        {
  
           string CurrentFilePath = string.Concat(Server.MapPath("~/masterdata/" + 
           FileUpload1.FileName));
             InsertExcelRecords(CurrentFilePath);
        }


когда я запускаю и выбираю файл и загружаю его, то ошибка отображается следующим образом

Внешняя таблица находится не в ожидаемом формате.

как решить эту ошибку "внешняя таблица не находится в ожидаемом формате".

Shashank Laxman

Проверьте, совпадает ли количество столбцов как в таблице, так и в файле.
Кроме того имя столбца имеет большое значение следовательно должно быть одинаковым как в таблице так и в файле

1 Ответов

Рейтинг:
0

Member 12207816

Вы пробовали это сделать с помощью "Microsoft Interop service". Взаимодействие дает вам больше гибкости при чтении контента из приложения MS office.