Code C# Import Excel File To Database

Import File Excel trong C# vào cơ sở dữ liệu (Import Excel File to Database) có nghĩa là lấy dữ liệu từ file excel nhập vào cơ sở dữ liệu (Database).Nó được sử dụng rất nhiều trong lập trình C# cho các ứng dụng phần mềm hiện nay.

Import file excel vào cơ sở dữ liệu sử dụng ngôn ngữ C# được ứng dụng cho trường hợp bạn phải nhập hoặc xử lý với dữ liệu lớn, một dach sách dữ liệu lớn nhằm giúp tiết kiệm thời gian nhập liệu hoặc xử lý dữ liệu.

Ví dụ khi bạn cần nhập một danh sách nhân viên khoảng 50000 nhân viên thì cần rất nhiều thời gian, có khi phải mất 5 tuần mới nhập xong.Tuy nhiên nếu bạn đã có sẵn 1 file excel của danh 50000 nhân viên đó thì bạn có thể import file excel trong C# chỉ mất khoảng 10 đến 20 giây.Vậy làm thế nào để import file excel trong C# vào cơ sở dữ liệu ? Trong bài này chúng tôi sẽ hướng dẫn bạn viết code C# để import dữ liệu của file excel vào trong cớ sở dữ liệu MSSQL Server.

Ví dụ yêu cầu bài toán của phần mềm là đọc dữ liệu từ file excel sau đó lưu dữ liệu vào cơ sở dữ liệu và hiển thị dữ liệu từ cơ sở dữ liệu lên DataGridview.

Chúng ta sẽ cần xây dựng chương trình C# để import dữ liệu từ file excel vào cơ sở dữ liệu (Database) như sau:

 

 

Các bước xây dựng chương trình C# import file excel vào database như sau:

1. Tạo file excel:

2. Tạo bảng table trong cơ sở dữ liệu MS SQL Server.

3. Tạo project import file excel vào database trong windows form.

 

1. Tạo file Excel :

Tạo file excel mà bạn cần import vào cơ sở dữ liệu với tên là : ImportExcel_Tem.xlsx 

Nội dung file excel như hình ảnh dưới đây:

 

 

2. Tạo bảng (table) trong cơ sở dữ liệu MSSQL Server.

Tạo bảng table : Employee_t  trong Database TestLuu

Nội dung bảng Employee_t như sau:

 

3. Tạo project import file excel vào database trong windows form.

Các bước tạo project như sau:

-Mở phần mềm IDE Visual studio và tạo dự án C# project Window Form như sau:

 

-Thêm các Controls (Label, Textbox, Button, DataGridView và openFileDialog1) vào Form:

 

Giải thích:

+ Label: File Name

+ Textbox: txt_FilePath là để hiển thị đường dẫn của file excel

+ Button: import Excel File… là để chọn file excel

+ DataGridView : dt_List_Employees là để hiển thị dữ liệu từ file excel.

+ openFileDialog1: là để chọn nơi lưu trữ file excel.

 

-Thêm thư viện: Microsoft.Office.Interop.Excel

 Để làm việc với file excel bạn cần thêm thư viện Microsoft.Office.Interop.Excel vào dự án project.

 Có 2 cách thêm thư viện Microsoft.Office.Interop.Excel

 + Cách 1: Nhấp chuột phải vào References sau đó chọn Add Reference.Sau đó hộp thoại xuất hiện và Click vào Assemblies, Extensions, sau đó tích chọn Microsoft.Office.Interop.Excel.

+ Cách 2:  Nhấp chuột phải vào References sau đó chọn Add Reference.Sau đó hộp thoại xuất hiện và Click vào nút Browse, ổ C, Microsoft Office, Office12, sau đó mở EXCEL.EXE.

 

- Viết Code C# import file excel:

+ Thêm thư viện dưới đây vào source code

using System.IO;
using System.Data.OleDb;
using System.Data.SqlClient;

 

+ Viết code cho sự kiện click của nut button Import Excel File để đọc file excel và lưu dữ liệu vào cơ sở dữ liệu và sau đó hiển thị dữ liệu lên DataGridView.

 

Source code import file excel vào database trong C# như sau:

Ví dụ

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.OleDb;
using System.Data.SqlClient;

namespace ImportExcel_CSharp
{
    public partial class ImportExcel_CSharp : Form
    {
        public ImportExcel_CSharp()
        {
            InitializeComponent();
        }

        //Import Excel file and Save data to a table in Database
        private void btn_Choose_ExcelFile_Click(object sender, EventArgs e)
        {
            string filePath = string.Empty;
            string fileExt = string.Empty;
            //open dialog to choose file 
            OpenFileDialog file = new OpenFileDialog();  
            //if there is a file choosen by the user 
            if (file.ShowDialog() == System.Windows.Forms.DialogResult.OK)  
            {
                //get the path of the file 
                filePath = file.FileName; 
                txt_FilePath.Text = Path.GetFullPath(filePath);
                //get the file extension
                fileExt = Path.GetExtension(filePath);   
                if (fileExt.CompareTo(".xls") == 0 || fileExt.CompareTo(".xlsx") == 0)
                {
                    try
                    {
                        DataTable dtExcel = new DataTable();
                        //read excel file 
                        dtExcel = ReadExcel(filePath, fileExt);  
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString());
                    }
                }
                else
                {
                    //custom messageBox to show error  
                    MessageBox.Show("Please choose .xls or .xlsx file only.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error); 
                }
            }
        }

 

        //Function Read data from excel file 
        private DataTable ReadExcel(string fileName, string fileExt)
        {
            string conn = string.Empty;

            DataTable dtexcel = new DataTable();
            if (fileExt.CompareTo(".xls") == 0)
                //for below excel 2007 version
                conn = @"provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HRD=Yes;IMEX=1';"; 
            else
                //for above excel 2007 version
                conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0;HDR=Yes';"; 

            using (OleDbConnection con = new OleDbConnection(conn))
            {
                try
                {
                    //Read data from sheet 
                    OleDbDataAdapter oleAdpt = new OleDbDataAdapter("select * from [Sheet1$]", con); 
                    DataSet ds = new DataSet();
                    // Fill excel data oleAdpt into dataTable 
                    oleAdpt.Fill(ds, "AA");  
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        //Connect to Database TestLuu
                        String Str_connect_DB = "data source=192.168.1.10;initial catalog=TestLuu; user id=sa; password=123456"
                        SqlConnection conn_DB = new SqlConnection(Str_connect_DB);
                        conn_DB.Open(); 
                        for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
                        {
                            //Insert data to a table : Employee_t in Database
                            string SQL_Insert = " INSERT INTO Employee_t(EmployeeID, EmployeeName, EmployeeAge) VALUES('" + ds.Tables[0].Rows[i]["EmployeeID"].ToString().Trim() + "',N'" + ds.Tables[0].Rows[i]["EmployeeName"].ToString().Trim() + "','" + Convert.ToInt32(ds.Tables[0].Rows[i]["EmployeeAge"].ToString().Trim()) + "')";
                            SqlCommand cmd = new SqlCommand(SQL_Insert, conn_DB);
                            cmd.ExecuteNonQuery();
                        }
                        MessageBox.Show("Imported successfully");
                        //Show data in DataGridView
                        String sql_ShowData = "Select * from Employee_t ";
                        SqlDataAdapter da = new SqlDataAdapter(sql_ShowData, conn_DB);
                        DataTable dt = new DataTable();
                        da.Fill(dt);
                        dt_List_Employees.DataSource = dt;
                        conn_DB.Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }
            return dtexcel;
        }
    }
}

 

Bước 4: Chạy chương trình import file excel và xem kết quả.