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#

Hybrid View

  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:	804
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:	207
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:	530
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
    04 2014
    Bài viết
    2

    Mặc định Export dữ liệu â excel vẫn báo lỗi

    Trích dẫn Nguyên bản được gửi bởi ZCoder87 Xem bài viết
    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!

    Chào bạn, bạn viết của bạn hay, mình rất thích nhưng cho hỏi, mình sử dụng office 2007 và vs 2008, sao chạy vẫn báp lỗi ạ, đây là lỗi Old format or invalid type library, mong bạn giúp đỡ hướng dẫn dùm

  5. #5
    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.

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

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

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

  7. #7
    Ngày gia nhập
    03 2011
    Bài viết
    2

    Excel.Application xlApp ;
    Excel.Workbook xlWorkBook ;
    hai cai nay ok
    Excel.Worksheet xlWorkSheet ;
    con cai nay tim ko ra la sao vay may ban

    Mấy bạn oi. mình lam theo may ban, ko bao loi nhung ko tim thay file excel o dau het

  8. #8
    Ngày gia nhập
    02 2010
    Nơi ở
    Hà nội
    Bài viết
    101

    Khi bạn cài Office có tùy chỉnh cài đặt các thành phần tương thích với .Net cho nhà phát triển.
    Bạn có thể modify cài đặt Office để xem các thành phần này đã được cài chưa

    Trích dẫn Nguyên bản được gửi bởi nth4 Xem bài viết
    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.

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

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

  10. #10
    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 đó

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