Trang 1 trên tổng số 8 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 79 kết quả

Đề tài: Exports dữ liệu ra excel trong lập trình C#

  1. #1
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Mặc định Exports dữ liệu ra excel trong lập trình C#

    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:
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		add_reference.jpg
Lần xem:	787
Size:		32.1 KB
ID:		5025

    Và kết nối using namespace
    Visual C# Code:
    1. 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 đó
    Visual C# Code:
    1. // Khởi động chtr Excell
    2. COMExcel.Application exApp = new COMExcel.Application();
    3.  
    4. // Thêm file temp xls
    5. COMExcel.Workbook exBook = exApp.Workbooks.Add(
    6.           COMExcel.XlWBATemplate.xlWBATWorksheet );
    7.  
    8. // Lấy sheet 1.
    9. 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:
    1. string workbookPath = "c:/SomeWorkBook.xls";
    2.  
    3. COMExcel.Workbook exBook = exApp.Workbooks.Open(workbookPath,
    4.         0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
    5.         true, false, 0, true, false, false);

    Sau đó nếu mình sử dụng:
    Visual C# Code:
    1. exSheet.Activate();
    2. exSheet.Name = "Export Data Sheet";

    Thì sheet của Excel sẽ như sau:
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Sheet.jpg
Lần xem:	205
Size:		11.4 KB
ID:		5026


    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:
    1. // Range là ô [1,1] (A1)
    2. COMExcel.Range r = (COMExcel.Range) exSheet.Cells[1, 1];
    3.  
    4. // Ghi dữ liệu
    5. r.Value2 = "Demo excel value";
    6.  
    7. // Giãn cột
    8. r.Columns.AutoFit();
    9.  
    10. // Hiển thị chương trình excel
    11. exApp.Visible = true;
    12.  
    13. // Đóng chương trình excel
    14. Console.WriteLine("Wait to excel.exe");
    15. Console.ReadLine();
    16. exApp.Quit();

    Hoặc bạn cũng có thể làm việc theo 1 khối như sau:

    Visual C# Code:
    1. COMExcel.Range r = (COMExcel.Range)exSheet.get_Range("A1", "A4");
    2. r.Value2 = "My Value";            
    3. r.Columns.AutoFit();

    Đây là kết quả
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		exelCellValue.jpg
Lần xem:	523
Size:		21.6 KB
ID:		5027

    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:
    1. // Ẩn chương trình
    2. exApp.Visible = false;    
    3.  
    4. // Save file
    5. exBook.SaveAs("C:\\file.xls", COMExcel.XlFileFormat.xlWorkbookNormal,
    6.                 null,null,false,false,
    7.                 COMExcel.XlSaveAsAccessMode.xlExclusive,
    8.                 false,false,false,false,false);
    9. 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.

    Visual C# Code:
    1. exBook.Close(false, false, false);
    2. exApp.Quit();
    3. System.Runtime.InteropServices.Marshal.ReleaseComObject(exBook);
    4. System.Runtime.InteropServices.Marshal.ReleaseComObject(exApp);

    Tham khảo thêm...

    Project đính kèm.
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi ZCoder87 : 18-12-2008 lúc 12:37 PM.

  2. #2
    Ngày gia nhập
    01 2009
    Bài viết
    64

    đ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

  3. #3
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    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!

  4. #4
    Ngày gia nhập
    06 2007
    Bài viết
    206

    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.

  5. #5
    Ngày gia nhập
    06 2009
    Bài viết
    2

    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, ..?

  6. #6
    Ngày gia nhập
    07 2009
    Bài viết
    12

    Mặc định Exports dữ liệu ra excel trong lập trình C#

    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ỉ?

  7. #7
    Ngày gia nhập
    07 2009
    Bài viết
    97

    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 đó

  8. #8
    Ngày gia nhập
    10 2009
    Bài viết
    110

    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?

  9. #9
    Ngày gia nhập
    08 2009
    Bài viết
    19

    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!

  10. #10
    Ngày gia nhập
    04 2008
    Bài viết
    37

    Bạn tạo sẵn một cái template excel mọi thứ định dạng bạn làm trên này hết đi.
    Rồi mỗi lần chạy bạn mở cái template này ra đổ dữ liệu vào thì nó sẽ có đúng format bạn cần.
    Sau xong chỉ cần dùng hàm Save as là được.

Các đề tài tương tự

  1. [Excel - C#] Đóng file Excel nhưng trong Task Manager vẫn còn?
    Gửi bởi nth4 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 18-05-2013, 05:15 PM
  2. Sử dụng file excel template có sẵn xuất ra report dạng excel?
    Gửi bởi ndnhan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 30-10-2012, 08:19 AM
  3. PDF TIFF Tools – Excel to PDF Converter - Chuyển đổi Excel sang PDF
    Gửi bởi hoahong89 trong diễn đàn Software (Phần mềm) | Ebooks
    Trả lời: 0
    Bài viết cuối: 13-05-2012, 04:00 AM
  4. Xuất dữ liệu ra Excel 2003 có khác với Excel 2007 không?
    Gửi bởi thuan199 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 31-03-2011, 08:47 AM
  5. Đọc ghi file Excel | Truy xuất Excel, như thế nào?
    Gửi bởi khacthuy trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 01-04-2009, 08:54 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn