Вставляйте записи excel один раз , без дубликатов
я вставляю в базу данных лист excel, я был в состоянии загрузить с именами листов и без них благодаря помощи группы , я просто хочу знать, как я могу предотвратить мой цикл от вставки данных несколько раз, например, если мой лист имеет 2 записи, цикл вставляет его дважды, и таблица в конечном итоге выглядит так: ............................
ID DOB ИМЯ ФАМИЛИЯ
1 1/02/1998 Джек Тернер
2 2/02/1989 Джилл синий
1 1/02/1998 Джек Тернер
2 2/02/1989 Джилл синий
я бы хотел, чтобы данные выглядели так после вставки:
ID DOB ИМЯ ФАМИЛИЯ
1 1/02/1998 Джек Тернер
2 2/02/1989 Джилл синий
Что я уже пробовал:
public void up(string sFileName = @"filename") { string ssqltable = "[dbo].[My_Table]"; //string sFileName = @"filename"; try{ string sConStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES';", sFileName); DataTable dt = new DataTable(); SqlConnection sqlconn = new SqlConnection(strConnString); sqlconn.Open(); using (OleDbConnection connection = new OleDbConnection(sConStr)) { connection.Open(); dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); var sheets = dt.Rows[0].Field<string>("TABLE_NAME"); foreach(var sheet in sheets) //loop through the collection of sheets ;) { //your logic here... string myexceldataquery = string.Format("Select * FROM [{0}]; ", sheets); //get data OleDbConnection oledbconn = new OleDbConnection(sConStr); OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn); oledbconn.Open(); OleDbDataReader dr = oledbcmd.ExecuteReader(); { DataTable table = new DataTable("benlist"); table.Load(dr); // add two extra columns to data table to be added to database table table.Columns.Add("name",typeof(string)); table.Columns.Add("surname",typeof(string)); // add data to additional columns foreach (DataRow row in table.Rows){ row["name"] =Session["Username"].ToString(); row["surname"] = Session["Username"].ToString(); } SqlBulkCopy bulkcopy = new SqlBulkCopy(strConnString); bulkcopy.DestinationTableName = ssqltable; ////Mapping Table column bulkcopy.ColumnMappings.Add("IDNumber", "[IDNumber]"); bulkcopy.ColumnMappings.Add("DOB", "[DOB]"); bulkcopy.ColumnMappings.Add("name", "[name]"); bulkcopy.ColumnMappings.Add("surname", "[surname]"); //sqlcmd.ExecuteNonQuery(); // while (dr.Read()) // { bulkcopy.WriteToServer(table); // } connection.Close(); sqlconn.Close(); } } } } catch (Exception){} ClientScript.RegisterStartupScript(GetType(), "alert", "alert('File Uploaded');", true); }
Gerry Schmitz
Я думаю, тебе нужно больше связей. Или создайте CSV-файл и "подключитесь" позже, как только вы разберетесь с "извлечением".