Đọc file Excel trong C# (Read Excel File in C#) được sử dụng rất phổ biến trong các ứng dụng phần mềm hiện nay.
Việc đọc và lấy dữ liệu từ file Excel trong C# của các phần mềm hiện nay mang lại rất nhiều hữu ích.Bởi vì việc nhập tay thủ công từng dòng dữ liệu rất mất thời gian và tốn công sức.
Ví dụ khi bạn cần nhập một danh sách nhân sự khoảng 10000 công nhân viên thì cần rất nhiều thời gian, có khi phải mất 1 tuần mới nhập xong.Tuy nhiên nếu bạn đã có sẵn 1 file excel của danh 10000 công nhân viên đó thì bạn có thể import file excel trong C# chỉ mất khoảng 5 đến 10 giây.Do việc đọc và lấy dữ liệu từ file excel trong C# có hiệu quả như vậy cho nên chúng tôi sẽ hướng dẫn các bạn viết code C# đọc file Excel.
Giả sử yêu cầu bài toán của phần mềm là đọc dữ liệu từ file excel sau đó hiển thị dữ liệu lên DataGridview.
Bây giờ chúng ta sẽ xây dựng chương trình C# đọc dữ liệu từ file excel như sau:
Tạo file excel tên : Read-Excel-CSharp-Tem.xlsx
-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_FileName là để hiển thị đường dẫn của file excel
+ Button: Choose 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.
Để 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.
+ Add thêm thư viện vào source code
using System.IO;
using ExcelApp = Microsoft.Office.Interop.Excel;
+ Viết code cho sự kiện click của nut button Choose Excel File để đọc file excel và hiển thị dữ liệu lên DataGridView.
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 ExcelApp = Microsoft.Office.Interop.Excel;
namespace ReadExcelFile_CSharp
{
public partial class Frm_ReadExcel : Form
{
public Frm_ReadExcel()
{
InitializeComponent();
}
private void btn_Choose_ExcelFile_Click(object sender, EventArgs e)
{
string filePath = string.Empty;
string fileExt = string.Empty;
OpenFileDialog file = new OpenFileDialog(); //open dialog to choose file
if (file.ShowDialog() == System.Windows.Forms.DialogResult.OK) //if there is a file choosen by the user
{
filePath = file.FileName; //get the path of the file
txt_FileName.Text = Path.GetFullPath(filePath);
fileExt = Path.GetExtension(filePath); //get the file extension
if (fileExt.CompareTo(".xls") == 0 || fileExt.CompareTo(".xlsx") == 0)
{
try
{
ExcelApp.Application excelApp = new ExcelApp.Application();
if (excelApp == null)
{
Console.WriteLine("Excel is not installed!!");
return;
}
ExcelApp.Workbook excelBook = excelApp.Workbooks.Open(txt_FileName.Text);
ExcelApp._Worksheet excelSheet = excelBook.Sheets[1];
ExcelApp.Range excelRange = excelSheet.UsedRange;
int rows = excelRange.Rows.Count;
int cols = excelRange.Columns.Count;
dt_List_Employees.RowCount = rows;
dt_List_Employees.ColumnCount = cols;
for (int i = 1; i <= rows; i++)
{
// read new line
for (int j = 1; j <= cols; j++)
{
//write to cell
if (excelRange.Cells[i, j] != null && excelRange.Cells[i, j].Value2 != null)
dt_List_Employees.Rows[i - 1].Cells[j - 1].Value = excelRange.Cells[i, j].Value2.ToString();
}
}
//after reading, relaase the excel project
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
else
{
MessageBox.Show("Please choose .xls or .xlsx file only.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error); //custom messageBox to show error
}
}
}
}
}