Xuất dữ liệu ở DataGridView ra file Excel trong C#
Xuất dữ liệu ở DataGridView ra file Excel trong C#
Ở bài trước mình đã hướng dẫn các bạn cách đọc dữ liệu từ file Excel để đưa lên DataGridView rồi, giờ mình sẽ hướng dẫn các bạn làm điều ngược lại.
Để xuất ra file Excel chúng ta cần làm 2 bước:
- Xuất tiêu đề các cột của bảng
- Xuất nội dung của bảng dữ liệu
Hàm
1 | public bool ExecuteNonQuery(String sql) |
dùng để thực thi 1 câu lệnh đến file Excel: Insert , Update,Delete
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public bool ExecuteNonQuery(String sql) { try { _con = Connect(); _cmd = new OleDbCommand(sql, _con); _cmd.ExecuteNonQuery(); _con.Close(); return true ; } catch (OleDbException ex) { _con.Close(); Console.WriteLine( "Lỗi" + ex.ToString()); return false ; } } |
Phần tạo tiêu đề cho các cột( column header) dùng câu lệnh sql để tạo cấu trúc bảng:
1 | String sqlHeader = "create table [Sheet1] ([Mã học sinh] varchar(10), [Họ và tên đệm] nvarchar(50), [Tên] nvarchar(20),[Điểm tb] float)" ; |
Phần lấy dữ liệu từ các hàng của datagridview lưu xuống file dùng câu lệnh sql sau:
1 | String sql = "insert into [Sheet1] values('" + dataGridView1.Rows[i].Cells[ "mã học sinh" ].Value.ToString() + "','" + dataGridView1.Rows[i].Cells[ "họ và tên đệm" ].Value + "','" + dataGridView1.Rows[i].Cells[ "tên" ].Value + "','" + dataGridView1.Rows[i].Cells[ "Điểm tb" ].Value + "')" ; |
ta làm như vậy cho đến khi hết các hàng trong DataGridView
Cuối cùng ta viết sự kiện cho button click chuột để save file Excel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | if (FileSave.ShowDialog() == DialogResult.OK) { Excel _excel = new Excel(FileSave.FileName); try { String sqlHeader = "create table [Sheet1] ([Mã học sinh] varchar(10), [Họ và tên đệm] nvarchar(50), [Tên] nvarchar(20),[Điểm tb] float)" ; _excel.ExecuteNonQuery(sqlHeader); for ( int i = 0; i < dataGridView1.Rows.Count-1; i++) { String sql = "insert into [Sheet1] values('" + dataGridView1.Rows[i].Cells[ "mã học sinh" ].Value.ToString() + "','" + dataGridView1.Rows[i].Cells[ "họ và tên đệm" ].Value + "','" + dataGridView1.Rows[i].Cells[ "tên" ].Value + "','" + dataGridView1.Rows[i].Cells[ "Điểm tb" ].Value + "')" ; _excel.ExecuteNonQuery(sql); } } catch (Exception ex) { } |
Link Demo