Đọc file excel C#

Em có file excel chưa thông tin như sau:

MaTen
22(TT) 22
23(TT) 23
24(TT) 24
25(TT) 25
26(TT) 26
27(TT) 27

Trên form em có 2 textboxma và textboxten. Bây giờ trên "textboxma" em gõ mã thì "textboxten" sẽ hiển thị ra tên tương ứng với mã đó.

Ví dụ: textboxma: 22 ===> textboxten: (TT) 22

Anh/chị nào biết hướng dẫn giúp em ?
 

snowolf901

Tuyết Lang
Reply: Đọc file excel

- cần 1 thư viện đọc excel. dll của microsoft cho khỏe
- dựa trên chức năng hiển thị sau mỗi phím gõ hoặc ấn enter, thì tốt nhất dùng thư viện load sẵn data từ excel lên 1 object, nếu không mỗi lần lại tìm trong file excel thì chậm lắm
- bắt sự kiện, vào object tạo ở trên tìm và hiển thị thôi :D
 
Reply: Đọc file excel

Hồi chiều giờ em đưa dữ liệu từ excel vào datagridview và duyệt từng dòng trên datagridview rồi lấy mã từng dòng đó so sanh với textboxma.

Code em thế này:

for (int j = 0; j < dgv.Rows.Count; j++)
{

.
if (dgv.Rows[j].Cells[0].Value.ToString() == textBox1.Text) \\ báo lỗi ở đây
{
textBox2.Text=dgv.Rows[j].Cells[1].Value.ToString();

}


}

Báo lỗi dòng màu đỏ, em không hiểu sai ở chổ đó là bị vấn đề gì vậy anh ? Hay là code thiếu gì nữa, mong anh/chị giúp đỡ.
 

snowolf901

Tuyết Lang
Reply: Đọc file excel

Hồi chiều giờ em đưa dữ liệu từ excel vào datagridview và duyệt từng dòng trên datagridview rồi lấy mã từng dòng đó so sanh với textboxma.

Code em thế này:

for (int j = 0; j < dgv.Rows.Count; j++)
{

.
if (dgv.Rows[j].Cells[0].Value.ToString() == textBox1.Text) \\ báo lỗi ở đây
{
textBox2.Text=dgv.Rows[j].Cells[1].Value.ToString();

}


}

Báo lỗi dòng màu đỏ, em không hiểu sai ở chổ đó là bị vấn đề gì vậy anh ? Hay là code thiếu gì nữa, mong anh/chị giúp đỡ.
thường thì sẽ báo lỗi out of index chỗ này. bạn xem row + column đếm từ 0 hay 1
bạn xem thông báo lỗi là gì :)
 
Reply: Đọc file excel

Lỗi: Object reference not set to an instance of an object
Dòng và cột đếm từ 0 anh.
 

snowolf901

Tuyết Lang
Reply: Đọc file excel

Lỗi: Object reference not set to an instance of an object
Dòng và cột đếm từ 0 anh.
bạn detect từng giá trị trong chuỗi đó xem có thằng nào null không nhé
nếu dgv.Rows[j].Cells[0].Value
là null thì gọi ToString() sẽ bị lỗi đó
 
Reply: Đọc file excel

Nếu để giá trị của "j" là các con số cố định thì không vấn đề gì nhưng để trong vòng for và duyệt từng dòng trên datagrid thì không hiểu: dgv.Rows[j].Cells[0].Value va cho là null. Vậy là sao em không hiểu ?

Code đầy đủ là như thế này:

OleDbConnection olecon = new OleDbConnection();
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + tb_duongdanchuaexcel.Text + ";Extended Properties=Excel 8.0";
olecon.ConnectionString = strCon;
olecon.Open();
string strSQL = "SELECT * FROM [Sheet1$]";
OleDbDataAdapter oleda = new OleDbDataAdapter(strSQL, olecon);
DataSet dsTest = new DataSet();
oleda.Fill(dsTest);
olecon.Close();
dgv.DataSource = dsTest.Tables[0];
for (int j = 0; j <= dgv.Rows.Count; j++)
{
if (textBox1.Text == dgv.Rows[j].Cells[0].Value.ToString())
{
textBox2.Text=dgv.Rows[j].Cells[1].Value.ToString();
}


}


====Ai giúp mình sửa lỗi này ?
 

snowolf901

Tuyết Lang
Reply: Đọc file excel

Nếu để giá trị của "j" là các con số cố định thì không vấn đề gì nhưng để trong vòng for và duyệt từng dòng trên datagrid thì không hiểu: dgv.Rows[j].Cells[0].Value va cho là null. Vậy là sao em không hiểu ?

Code đầy đủ là như thế này:

OleDbConnection olecon = new OleDbConnection();
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + tb_duongdanchuaexcel.Text + ";Extended Properties=Excel 8.0";
olecon.ConnectionString = strCon;
olecon.Open();
string strSQL = "SELECT * FROM [Sheet1$]";
OleDbDataAdapter oleda = new OleDbDataAdapter(strSQL, olecon);
DataSet dsTest = new DataSet();
oleda.Fill(dsTest);
olecon.Close();
dgv.DataSource = dsTest.Tables[0];
for (int j = 0; j <= dgv.Rows.Count; j++)
{
if (textBox1.Text == dgv.Rows[j].Cells[0].Value.ToString())
{
textBox2.Text=dgv.Rows[j].Cells[1].Value.ToString();
}


}


====Ai giúp mình sửa lỗi này ?
số row trong sheet không phải chỉ có những row có giá trị mà còn có những row trống, khi đó Value sẽ null
Khắc phục:
-check null trước
dgv.Rows[j].Cells[0].Value != null && textBox1.Text == dgv.Rows[j].Cells[0].Value.ToString()
hoặc return hàm nếu Value bị null

 

Thống kê

Chủ đề
100,754
Bài viết
467,588
Thành viên
339,851
Thành viên mới nhất
Đông Âu
Top