Khắc phục lỗi convert string to nvarchar khi import excel năm 2024

Trong excel cũng có lệnh lấy 3 kí tự đầu được mà bạn, sao bạn không làm trong Excel đi rồi hãy Import vào


  • >
    Khắc phục lỗi convert string to nvarchar khi import excel năm 2024
    Gửi bởi thanlong_1189
    Trong excel cũng có lệnh lấy 3 kí tự đầu được mà bạn, sao bạn không làm trong Excel đi rồi hãy Import vào

Ừ nhỉ .. mình cũng đảng trí quá .. cảm ơn bạn nhiều nhé.. có code nào ở trên mình không hiểu mình xin hỏi thêm nhé !! mong bạn giúp đỡ thêm [IMG]images/smilies/smile.png[/IMG]

-
  • > Thanks bạn !! mình sẽ thử dùng các của bạn xem thế nào !! Bạn cho mình hỏi lun nhé .. Lấy ví dụ trong đoạn code của bạn nhé

Ví dụ : Trong file excel với sql đều có các trường : ItemCode,Type,ItemCodeRelated Bây giờ trong file excel mình chỉ cần nhập Trường ItemCode (các trường khác sẽ k nhập bằng tay) .. và lấy 3 ký tự đầu của nó để kiểm tra nếu 3 ký tự đầu (u11) trc khi import thì Type gán =2 chẳng hạn rồi ms import !

- > ý bạn là chỗ này ý hả

Mã:

if (checkitemcode(ItemCodeRelated) == true) {

nếu thế thì bạn thử:

Mã:

private DataTable ReadDataFromExcelFile() > { > string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + txtFilePath.Text.Trim() + ";Extended Properties=Excel 8.0"; > // Tạo đối tượng kết nối > OleDbConnection oledbConn = new OleDbConnection(connectionString); > DataTable data = null; > try > { > // Mở kết nối > oledbConn.Open(); // Tạo đối tượng OleDBCommand và query data từ sheet có tên "Sheet1" > OleDbCommand cmd = new OleDbCommand("SELECT
FROM [Sheet1$]", oledbConn);

// Tạo đối tượng OleDbDataAdapter để thực thi việc query lấy dữ liệu từ tập tin excel > OleDbDataAdapter oleda = new OleDbDataAdapter(); oleda.SelectCommand = cmd; // Tạo đối tượng DataSet để hứng dữ liệu từ tập tin excel > DataSet ds = new DataSet(); // Đổ đữ liệu từ tập excel vào DataSet > oleda.Fill(ds); > data = ds.Tables[0];//đổ dữ liệu vào Table data > dgvData.DataSource = data;//hiển thị lên datagridview trước > oledbConn.Close(); > } > catch > { > MessageBox.Show("Tập tin không đúng! Vui lòng chọn lại tập tin file excel 2003.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); > } > return data; > }

0

-
  • > Bạn ơi mình code theo cách của bạn mà chẳng hạn mình đặt ItemCode là Primary key mà khi mình insert 1 IntemCode đã có trong CSDL thì mình sẽ xử lý như thế nào được mình đang rối đoạn này !
    Khắc phục lỗi convert string to nvarchar khi import excel năm 2024
    - > Theo mình thì bạn nên bỏ qua nó [IMG]images/smilies/smile.png[/IMG]

    hoặc là thông bảo lỗi ở dòng nào để còn biết mà xóa cái Itemcode đó đi khỏi Excel


    Hi all!

    Mình thấy bạn chicks dùng SqlBulkCopy ngay từ ban đầu là bạn đúng hướng rồi đó. nhưng vấn đề là cách xử lý kỹ thuật đoạn này thôi. Làm như bạn than_long cũng được nhưng mà mình đọc cũng thấy chán chứ sau này mà sửa nữa thì chắc cận thêm, hihi. Bạn Chicks thay vì bạn insert vào bảng gốc luôn thì bạn insert vào một bảng tạm khác có cùng cấu trúc với bảng bạn cần đưa dữ liệu. Sau khi import xong, bạn viết 1 Store Procedure nho nhỏ lấy ra dòng nào có trong bảng tạm mà không có trong bảng chính rồi insert, tương tự sẽ dễ dàng tìm ra dòng nào trùng và bạn có thể update tùy ý. Xử lý bằng code C# mình khẳng định là không thể nào nhanh hơn cách này. Chúc 2 bạn tìm được cảm hứng làm thử, bye I wrote a code to import excel data to SQL. There first I m importing excel data into a data table and that data table i am saving into SQL database.I am having one field data type data time. while importing I am taking all values as a string.I am Saving them with the help of one stored procedure. Saving time I am facing error at date time field. here is the code. foreach (DataRow xrow in dt.Rows)

               {  
                   string siteid = xrow["siteid"].ToString().Trim();  
                   string site = xrow["site"].ToString().Trim();  
                   DateTime asd = DateTime.Now;  
                   asd = Convert.ToDateTime(xrow["asdate"]);  
                   string address = xrow["address"].ToString().Trim();  
                   string city = xrow["city"].ToString().Trim();  
                   string district = xrow["district"].ToString().Trim();  
                   string zone = xrow["zone"].ToString().Trim();  
                   string rpname = xrow["rpname"].ToString().Trim();  
                   string phno = xrow["phno"].ToString().Trim();  
                   string lessor = xrow["lessor"].ToString().Trim();  
                   string phone = xrow["phone"].ToString().Trim();  
                   string fse = xrow["fse"].ToString().Trim();  
                   string contact = xrow["contact"].ToString().Trim();  
                   string remark1 = xrow["remark1"].ToString().Trim();  
                   string remark2 = xrow["remark2"].ToString().Trim();  
                   string prodate = xrow["prodate"].ToString().Trim();  
                   string restatus = xrow["restatus"].ToString().Trim();  
                   string doctype = xrow["doctype"].ToString().Trim();  
                   SqlCommand addrow = new SqlCommand("ProductBulkInsertion", con);  
                   addrow.CommandType = CommandType.StoredProcedure;  
                   addrow.Parameters.AddWithValue("@siteid", siteid);  
                   addrow.Parameters.AddWithValue("@site", site);  
                   addrow.Parameters.AddWithValue("@asdate", asd);  
                   addrow.Parameters.AddWithValue("@address", address);  
                   addrow.Parameters.AddWithValue("@city", city);  
                   addrow.Parameters.AddWithValue("@district", district);  
                   addrow.Parameters.AddWithValue("@zone", zone);  
                   addrow.Parameters.AddWithValue("@rpname", rpname);  
                   addrow.Parameters.AddWithValue("@phno", phno);  
                   addrow.Parameters.AddWithValue("@lessor", lessor);  
                   addrow.Parameters.AddWithValue("@phone", phone);  
                   addrow.Parameters.AddWithValue("@fse", fse);  
                   addrow.Parameters.AddWithValue("@remark1", remark1);  
                   addrow.Parameters.AddWithValue("@remark2", remark2);  
                   addrow.Parameters.AddWithValue("@prodate", prodate);  
                   addrow.Parameters.AddWithValue("@restatus", restatus);  
                   addrow.Parameters.AddWithValue("@doctype", doctype);  
                   addrow.ExecuteNonQuery();  
    
    error is string was not recognized as a valid datetime What I have tried: I tried tryparse, tryparse extract and all but failed.I searched net but no suitable answer. So I posted Here.


    Ok. My Problem Solved. I changed cell data type to date time in excel itself and I changed date format of all those date cells into single format into Indian format dd/MM/yyyy. This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)