Как получить имена столбцов не начинается с первой строки с OLEDB
Привет ,
У меня есть этот код, но я импортирую данные только тогда, когда имя столбца начинается в первой строке. Мои имена столбцов начинаются от столбца 2 до строки столбца 6 Как я решил эту проблему? Я знаю, что мне нужен диапазон, но я не знаю кода для этого, я пробую это
Что я уже пробовал:
ataTable dt = new DataTable(); conString = string.Format(conString, filePath); using (OleDbConnection connExcel = new OleDbConnection(conString)) { using (OleDbCommand cmdExcel = new OleDbCommand()) { using (OleDbDataAdapter odaExcel = new OleDbDataAdapter()) { cmdExcel.Connection = connExcel; //Get the name of First Sheet. connExcel.Open(); DataTable dtExcelSchema; dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString(); connExcel.Close(); // TRY THIS BUT NOT WORKS // string Range = //cmdExcel.CommandText = "SELECT * From [" + sheetName + "$B6:C10]"; //cmdExcel.CommandText = "SELECT * From [" + sheetName + Range +"]"; connExcel.Open(); cmdExcel.CommandText = "SELECT * From ["+ sheetName +"]"; odaExcel.SelectCommand = cmdExcel; odaExcel.Fill(dt); connExcel.Close(); } } } conString = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString; using (SqlConnection con = new SqlConnection(conString)) { using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con)) { //Set the database table name. sqlBulkCopy.DestinationTableName = "dbo.Tipo_Adquisicion"; //[OPTIONAL]: Map the Excel columns with that of the database table sqlBulkCopy.ColumnMappings.Add("CÓDIGO EMPRESA", "Tipo_Adquisicion"); sqlBulkCopy.ColumnMappings.Add("PERÍODO INFORMACIÓN", "descripcion"); // sqlBulkCopy.ColumnMappings.Add("Country", "Country"); con.Open(); sqlBulkCopy.WriteToServer(dt); con.Close(); } } }
Maciej Los
Поставщик OleDb может читать заголовок одной строки. Если заголовок содержит больше строк, то эти строки рассматриваются как данные.