Экспорт данных 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
Проверьте, совпадает ли количество столбцов как в таблице, так и в файле.
Кроме того имя столбца имеет большое значение следовательно должно быть одинаковым как в таблице так и в файле