Akshada Sane Ответов: 1

Как разделить данные csv запятой и импортировать данные в SQL с помощью ASP.NET объемная вставка


For "Name"(Line No 20)

In My Excel Sheet Data is Akshada,Shivani,Malvika,Rutu


But I want to store in data table like this

id     Name
1     Akshada
2     Shivani
3     Malvika
4     Rutu


// below code stores all same to same data from excel to database
sqlBulkCopy.ColumnMappings.Add("Name", "Name");
// I want to separate data for second row's Second column
// hear(Line No 23) I get all excel sheet data in dtExcelData
con.Open();
            sqlBulkCopy.WriteToServer(dtExcelData);
con.Close();


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

1 conString = string.Format(conString, excelPath);
2    using (OleDbConnection excel_con = new OleDbConnection(conString))
3    {
4        excel_con.Open();
5        string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
6        DataTable dtExcelData = new DataTable();
 
        //[OPTIONAL]: It is recommended as otherwise the data will be considered as String by default.
7        dtExcelData.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),
8                new DataColumn("Name", typeof(string)),
9                new DataColumn("Salary",typeof(decimal)) });
 
10        using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + sheet1 + "]", excel_con))
11        {
12            oda.Fill(dtExcelData);
13       }
14       excel_con.Close();
 
15       string consString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
16       using (SqlConnection con = new SqlConnection(consString))
        {
17           using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
            {
                //Set the database table name
18                sqlBulkCopy.DestinationTableName = "dbo.tblPersons";
 
                //[OPTIONAL]: Map the Excel columns with that of the database table
19                sqlBulkCopy.ColumnMappings.Add("Id", "PersonId");
20                sqlBulkCopy.ColumnMappings.Add("Name", "Name");
21                sqlBulkCopy.ColumnMappings.Add("Salary", "Salary");
22               con.Open();
23              sqlBulkCopy.WriteToServer(dtExcelData);
24             con.Close();
            }
        }
    }

CHill60

Что не так с кодом, который вы скопировали?
Попробуйте сохранить данные excel в формате CSV без кавычек в текстовых полях и посмотреть, будет ли это загружаться.
Вы можете загрузить данные в промежуточную таблицу и использовать Расщеплять[^] функция для дальнейшей обработки его.

1 Ответов

Рейтинг:
9

Anuj Mehta

conString = string.Format(conString, excelPath);
        using (OleDbConnection excel_con = new OleDbConnection(conString))
        {
            excel_con.Open();
            string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
            DataTable dtExcelData = new DataTable();
            //[OPTIONAL]: It is recommended as otherwise the data will be considered as String by default.
            dtExcelData.Columns.AddRange(new DataColumn[2]              
            {                
                new DataColumn("Id", typeof(int)),
                             new DataColumn("Name", typeof(string))   });
 
            using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + sheet1 + "]", excel_con))
            {
                oda.Fill(dtExcelData);
            }
            excel_con.Close();
            string consString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
            using (SqlConnection con = new SqlConnection(consString))
            {
                using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
                {
                    if (dtExcelData.Rows.Count > 0)
                    {
                        foreach (DataRow dRow in dtExcelData.Rows)
                        {
                            
                            objContactBO.id = dRow["id"].ToString();                            
                            objContactBO.Name = dRow["Name"].ToString();
                            
						
							
							// saperate data value
                            string strValue = objContactBO.Name;
                            string[] strArray = strValue.Split(',');
							// insert data in new column
                            foreach (String Name in strArray)
                            {
                                objContactBO.Name = dt.Rows[0]["Name"].ToString();
								//insert for second Name in different column on same id
                                result2 = objContactBL.Insert_ContactInDiffColumName(objContactBO);
                            }
                        }
                    }
                }
            }
        }