Ở bài viết trước mình có hướng dẫn cho các bạn cách đọc file Word trong C Sharp (còn gọi là C#) cùng với thư viện hỗ trợ Microsoft.Office.Interop.Word. Và ở bài viết này mình sẽ hướng dẫn các bạn cách đọc file Excel Trong C#.
Phương pháp này cũng sử dụng thư viện Interop giống bài viết trước. Đầu tiên, thêm tham chiếu vào Thư viện đối tượng Microsoft Excel XX.X , nằm trong tab COM của Trình quản lý tham chiếu. Mình đã đưa ra điều này bằng cách sử dụng bí danh của Excel.
using Excel = Microsoft.Office.Interop.Excel; //Microsoft Excel 14 object in references-> COM tab
Nếu các bạn cảm thấy khó khăn ở bước trên mình sẽ hướng dẫn chi tiết về bước trên cho các bạn tại đây.
Bạn bắt buộc phải tải DLL Microsoft.Office.Interop.Excel về máy mới có thể hoàn thành bài code này.
Đây là link cập nhật phiên bản mới nhất: Download Microsoft.Office.Interop.Excel.dll
Hoặc nếu link die thì các bạn cũng có thể Download Phiên bản 15.0.4569.1506
Cách Cài đặt trực tiếp Microsoft.Office.Interop.Excel.dll vào Windows.
- Sao chép tệp .DLL vào thư mục C:\Windows\System32 (nếu sử dụng HĐH 32 bit)
- Sao chép tệp .DLL vào thư mục C:\Windows\SysWOW64 (nếu sử dụng HĐH 64 bit)
- Cài đặt DLL đã được hoàn thành!
Tiếp theo Bạn tạo 1 Project Console App(.Net Framework)
Trong Solution Explorer , bấm chuột phải vào tên dự án của bạn và sau đó bấm Add Reference . Các Add Reference hộp thoại sẽ xuất hiện.
Trên trang Assemblies, click chọn Microsoft.Office.Interop.Excel trong danh sách Component Name . Và nhấn OK.
Sau khi đã làm những bước trên bạn có thể thêm tham chiếu vào thư viện được rồi.
using Excel = Microsoft.Office.Interop.Excel; using Word = Microsoft.Office.Interop.Word;
Tiếp theo, bạn sẽ cần tạo references cho từng đối tượng COM được truy cập. Mỗi references phải được lưu giữ để thoát khỏi ứng dụng một cách hiệu quả khi hoàn thành.
// Tạo đối tượng COM. Tạo một đối tượng COM cho mọi thứ được tham chiếu Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"sandbox_test.xlsx"); Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; Excel.Range xlRange = xlWorksheet.UsedRange;
Sau đó, bạn có thể đọc từ trang tính sheet, hãy nhớ rằng lập chỉ mục trong Excel không dựa trên 0. Điều này chỉ cần đọc các ô và in chúng trở lại giống như trong tệp.
//Lặp lại qua các hàng và cột và in ra bàn điều khiển khi nó xuất hiện trong tệp //excel is not zero based!! for (int i = 1; i <= rowCount; i++) { for (int j = 1; j <= colCount; j++) { //dòng mới if (j == 1) Console.Write("\r\n"); //ghi giá trị vào bàn điều khiển console if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null) Console.Write(xlRange.Cells[i, j].Value2.ToString() + "\t"); } }
Cuối cùng, các tham chiếu (references) đến bộ nhớ không được quản lý phải được xuất ra. Nếu điều này không được thực hiện đúng cách, thì sẽ có các quy trình kéo dài giữ quyền truy cập tập tin và ghi vào file Excel của bạn.
//cleanup GC.Collect(); GC.WaitForPendingFinalizers(); //quy tắc của việc phát hành các đối tượng com: //không bao giờ sử dụng hai dấu chấm, tất cả các đối tượng COM phải được tham chiếu và phát hành riêng lẻ // ví dụ: [somthing].[something].[something] ----> bad //xuất các đối tượng com để dừng hoàn toàn quá trình excel chạy trong nền Marshal.ReleaseComObject(xlRange); Marshal.ReleaseComObject(xlWorksheet); //đóng lại và xuất thông tin xlWorkbook.Close(); Marshal.ReleaseComObject(xlWorkbook); //thoát và xuất thông tin xlApp.Quit(); Marshal.ReleaseComObject(xlApp);
Full Code đầy đủ để đọc 1 file Excel trong C# :
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using Excel = Microsoft.Office.Interop.Excel; //microsoft Excel 14 object in references-> COM tab namespace Sandbox { public class Read_From_Excel { public static void getExcelFile() { //Create COM Objects. Create a COM object for everything that is referenced Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\E56626\Desktop\Teddy\VS2012\Sandbox\sandbox_test - Copy - Copy.xlsx"); Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; Excel.Range xlRange = xlWorksheet.UsedRange; int rowCount = xlRange.Rows.Count; int colCount = xlRange.Columns.Count; //iterate over the rows and columns and print to the console as it appears in the file //excel is not zero based!! for (int i = 1; i <= rowCount; i++) { for (int j = 1; j <= colCount; j++) { //new line if (j == 1) Console.Write("\r\n"); //write the value to the console if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null) Console.Write(xlRange.Cells[i, j].Value2.ToString() + "\t"); } } //cleanup GC.Collect(); GC.WaitForPendingFinalizers(); //rule of thumb for releasing com objects: // never use two dots, all COM objects must be referenced and released individually // ex: [somthing].[something].[something] is bad //release com objects to fully kill excel process from running in the background Marshal.ReleaseComObject(xlRange); Marshal.ReleaseComObject(xlWorksheet); //close and release xlWorkbook.Close(); Marshal.ReleaseComObject(xlWorkbook); //quit and release xlApp.Quit(); Marshal.ReleaseComObject(xlApp); } static void Main(string[] args) { getExcelFile(); Console.Read(); } } }
Xem thêm:
- Thuật Toán Tính Tổng Cộng Hai Số Cực Lớn JAVA
- Khóa Học Thiết Kế Website Với WIX Cho Người Mới Bắt Đầu
- Download Classic Game Windows 7 dành cho Windows 10 / 8.1
- Share bộ code web HTML5 tỏ tình đơn giản nhưng thật ngọt ngào
- Source Code Logo Avata giống Porn Hub đẹp mắt
- Share Source Code Ma Trận Html Viết Bằng Canvas Tuyệt Đẹp
- Download Revo Uninstaller Pro Full Repack Update Mới nhất 2019 – Gỡ bỏ phần mềm tiện dụng hiệu quả
- Chia Sẻ Khóa Học Python Cho Người Mới Bắt Đầu (Python for Beginners: Learn with Examples and Mini-Project)
CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ
Leave a Reply