Exports dữ liệu ra excel trong lập trình C#

Liên hệ QC

khoavu87

Vũ Trần Khoa
Tham gia
5/3/09
Bài viết
1,311
Được thích
1,769
Nghề nghiệp
Kỹ Sư Xây dựng cầu đường
Lang thang trên mạng tình cờ tìm được đoạn code này hay gửi mọi người.
Mình thấy cái này cũng có nhiều người hỏi nên post lên đây luôn.

Để exports dữ liệu ra excel thì chúng ta cần làm việc với 1 đối tượng COM của excel.exe.

COM là một đối tượng đóng gói theo 1 chuẩn do MS định ra và nó có khả năng chạy được trên nhiều nền tảng ví dụ như: Win32, .NET và kể cả Script bằng JS hay VBS của Web Browser hay trên Server như PHP, ASP, ASP.NET...

Vậy việc đầu tiên bạn phải reference COM excel object vào project như sau:
add_reference.bmp


Và kết nối using namespace

C# code:
using COMExcel = Microsoft.Office.Interop.Excel;
Đối tượng COM của excel này bao gồm:
- Application (chương trình
excel)
- Workbook (file xls làm việc, có nhiều workbook trong app)
- Worksheet (có nhiều worksheet trong workbook)

Như vậy sau đó

C# code:
// Khởi động chtr Excell
COMExcel.
Application exApp = new COMExcel.Application();

// Thêm file temp xls
COMExcel.
Workbook exBook = exApp.Workbooks.Add(
COMExcel.
XlWBATemplate.xlWBATWorksheet );

// Lấy sheet 1.
COMExcel.
Worksheet exSheet = (COMExcel.Worksheet)exBook.Worksheets[1];

 
Còn nữa . Tiếp theo là
Thay vì tạo 1 file Temp excel thì mình cũng có thể mở 1 file excel có sẵn
C# code:
string workbookPath = "c:/SomeWorkBook.xls";

COMExcel.
Workbook exBook = exApp.Workbooks.Open(workbookPath,
0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
true, false, 0, true, false, false);

Sau đó nếu mình sử dụng:
C# code:
exSheet.Activate();
exSheet.
Name = "Export Data Sheet";
Thì sheet của Excel sẽ như sau:



Tiếp tục là Range (nó là một khối ô select, nó cũng có thể chỉ là 1 ô)

Như vậy để ghi
dữ liệu lên Ô thứ (A1) thì chúng ta sẽ làm như sau:
C# code:
// Range là ô [1,1] (A1)
COMExcel.
Range r = (COMExcel.Range) exSheet.Cells[1, 1];

// Ghi dữ liệu
r.
Value2 = "Demo excel value";

// Giãn cột
r.
Columns.AutoFit();

// Hiển thị chương trình excel
exApp.
Visible = true;

// Đóng chương trình excel
Console.
WriteLine("Wait to excel.exe");
Console.
ReadLine();
exApp.
Quit();
Hoặc bạn cũng có thể làm việc theo 1 khối như sau:
C# code:
COMExcel.Range r = (COMExcel.Range)exSheet.get_Range("A1", "A4");
r.
Value2 = "My Value";
r.
Columns.AutoFit();
Đây là kết quả


Công việc cuối cùng là save file nếu như bạn ko muốn hiện cửa sổ

C# code:
// Ẩn chương trình
exApp.
Visible = false;

// Save file
exBook.
SaveAs("C:\\file.xls", COMExcel.XlFileFormat.xlWorkbookNormal,
null,null,false,false,
COMExcel.
XlSaveAsAccessMode.xlExclusive,
false,false,false,false,false);
exApp.
Quit();
Excel là một đối tượng dạng COM và ngoài sự quản lý của CLR nên tốt nhất cuối cùng bạn nên khử đối tượng này.
C# code:
exBook.Close(false, false, false);
exApp.
Quit();
System.
Runtime.InteropServices.Marshal.ReleaseComObject(exBook);
System.
Runtime.InteropServices.Marshal.ReleaseComObject(exApp);
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom