đoạn code của cậu mình chạy Debug 2005 thì nó báo lỗi như trên hình ấy,không rõ tại sao
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:
Và kết nối using namespace
Visual C# Code:
Đố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 đó
Visual C# Code:
// Khởi động chtr Excell // 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];
Thay vì tạo 1 file Temp excel thì mình cũng có thể mở 1 file excel có sẵn
Visual C# Code:
Sau đó nếu mình sử dụng:
Visual 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:
Visual 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 // Đó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:
Visual 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ổ
Visual C# Code:
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.
Visual C# Code:
Tham khảo thêm...
Project đính kèm.
Đã được chỉnh sửa lần cuối bởi ZCoder87 : 18-12-2008 lúc 12:37 PM.
đoạn code của cậu mình chạy Debug 2005 thì nó báo lỗi như trên hình ấy,không rõ tại sao
Vì mình sử dụng office 2007 (trong khi máy của bạn phiên bản thấp hơn)
Sửa lỗi này thì bạn phải vào mục references xóa office 12 object của mình đi và làm lại bước references ở đầu cho đúng phiên bản. Khỏi cần sửa code!
nếu PC mà ko cài Excel thì sẽ báo lỗi.
Làm thế nào để kiểm tra máy có đc cài đặt Excel chưa để thông báo cho người dùng biết.
Thà để chửi dốt 1 lần, còn hơn ngu cả đời.
Cảm ơn ZCoder87! Vấn đề "Exports dữ liệu ra excel trong lập trình C#" thì tớ OK rồi, nhưng bạn có thể mở rộng thêm phần Style thì tốt quá, ví dụ như kẻ khung, cỡ chữ, font chữ, Page Setup, ..?
phần này hay thật đó ! nhưng mình làm vẫn không được! muốn xuất ra những file theo ý mình thì sẽ như thế nào nhỉ?
Theo mình để xuất ra file excel có kẻ khung, font
- Tạo trước các file excel theo mẫu theo ý mình.
- Khi cần xuất dữ liệu, ta thực hiện lệnh copy file mẫu ra file mới rồi xuất dữ liệu lên file đó
Cho em hỏi cái lưu File excel lại mà thành Binary trong bộ nhớ chứ không phải ra thằng ra đĩa thì làm sao?
Export ra Excel thì trên công cụ Crystal Report có rồi nhưng đó chỉ là đưa sang Excel chứ chưa thật sự là OK vì nó không tạo được định dạng (như trang in, kẻ khung cho cell..). Để nội dung đề tài này trọn vẹn thì bạn nào biết cách Export sang Excel và định dạng theo mẫu để in ra.
Rất mong sự chia sẽ của các bạn!