Lưu trữ

Posts Tagged ‘Programming’

DXNTool – SourceCode Generator, and more..

Insertion Script

Khi lập trình các ứng dụng cơ sở dữ liệu, nhiều lúc chúng ta cần những tiện ích đơn giản dùng để sinh (generate) ra các mã trình một cách tự động từ cấu trúc cho trước. Đối với một bảng dữ liệu trong một hệ quản trị CSDL nào đó, có thể bạn đã và sẽ cần một tiện ích có các tính năng sau:

(1)    Generate câu lệnh tạo bảng;

(2)    Generate chuỗi insert dữ liệu của bảng đó;

(3)    Generate tài liệu về bảng (database table documentation) để lưu trữ;

(4)    Kết xuất (export) dữ liệu bảng ra file excel;

(5)    Generate Business Object class tương ứng theo cấu trúc bảng để thuận tiện cho việc viết mã trong các ứng dụng;

Các tính năng này, hoặc đã có sẵn trong các công cụ quản trị CSDL (chẳng hạn, SQL Server Management Studio), hoặc có thể có rải rác trong các tiện ích miễn phí và trả tiền (chẳng hạn, Tier Dev), hoặc có những hướng dẫn viết code để tự làm ra chúng trên các website về lập trình. Có thể kể ra một vài đường link sau:

http://www.codeproject.com/Articles/19719/Generate-Insertion-Scripts-Using-NET-2-0

http://www.codeproject.com/KB/codegen/TierGenerator.aspx

http://smartcodegenerator.codeplex.com/

Sau nhiều lần thử cài đặt các công cụ và tải các mã nguồn kèm hướng dẫn về chạy thử, tôi thấy chưa thật sự thỏa mãn. Do công cụ quá cồng kềnh cho một tính năng nhỏ, do công cụ quá cứng ngắc đầu ra (thay đổi phải sửa hardcode), do công cụ tốt thì phải trả tiền mà cũng không đủ các tính năng mình mong muốn,… tôi đã tự viết công cụ với các tính năng cho riêng mình.

Công cụ với mục tiêu là các tính năng nêu trên tôi đang viết vào những lúc rảnh và cũng không thật rốt ráo (cần đến đâu viết đến đó), và vẫn bổ sung dần dần các tính năng khác như generate toàn bộ một project mẫu với chức năng CRUD đầy đủ, đầu ra tùy biến theo template chỉnh sửa được. Chắc chắn rằng nhiều người đã tự làm cho mình các công cụ như vậy (chẳng hạn đồng nghiệp và bạn bè mà tôi biết) vì mỗi người mong muốn các tính năng khác nhau cho riêng mình.

Tôi xin được chia sẻ công cụ này (vẫn còn vài bug exception) cho bạn nào chưa tìm được công cụ nhỏ gọn, portable của riêng mình có thể tham khảo sử dụng, với các tính năng (1)-(4) và các ưu điểm:

–          Làm việc trên 3 Hệ quản trị CSDL thường gặp là MS SQL Server, Oracle, MySQL (có thể bổ sung các loại khác),

–          Có thể tùy biến template (file XSLT) để thay đổi output như mong muốn (hiện áp dụng cho tính năng (3)). Về nguyên tắc, có thể generate ra mã nguồn của một ngôn ngữ tùy ý,

–          Rất nhỏ gọn,

–          Portable (không cần cài đặt).

Bạn nào quan tâm, cần bổ sung các tiện ích khác có thể trao đổi thêm để hoàn thiện.

Download Here

Generate table documentation

Hình: Generate table documentation (có thể save as thành file .htm)

Advertisements

Kết xuất dữ liệu ra Excel (1)

Tháng Bảy 14, 2012 2 comments

Khi phát triển các phần mềm nghiệp vụ nói chung, sẽ có lúc bắt gặp yêu cầu kết xuất dữ liệu ra file excel để xử lý. Người dùng văn phòng rất ưa chuộng sự linh hoạt của phần mềm bảng tính phổ biến hàng đầu của Microsoft này. Các hãng thứ ba cũng thường có tính năng kết xuất dữ liệu ra một số định dạng phổ biến trong đó có excel.

Để làm được việc này, người phát triển có thể sử dụng thư viện của bộ office (Microsoft.Office.Interop.Excel.dll) để thao tác, ưu điểm là có thể tạo ra các file excel có định dạng phức tạp, nhược điểm là viết code cồng kềnh và khi triển khai cần cài đặt MS Office trên máy đích.
Tôi muốn chia sẻ ở bài này các cách khác nhau có thể kết xuất Excel mà hoàn toàn không sử dụng thư viện của Microsoft (do vậy khi deploy không yêu cầu môi trường phải cài đặt MS Office).
1. Kết xuất định dạng XML Spreadsheet

Nếu yêu cầu kết xuất excel chỉ đơn giản là đổ một datatable ra thành một sheet với các dòng dữ liệu tương ứng trong excel, thì cách sau đây là đơn giản nhất và chỉ cần sử dụng đọc ghi file text để xử lý. Ở đây tôi sử dụng C#2.0 để minh họa cho việc này.

Bước 1: Bạn tạo template, bằng cách tạo một file excel bình thường, có một sheet thể hiện dữ liệu của một bảng mẫu, nội dung và định dạng header theo ý bạn, chẳng hạn như hình vẽ.

Bước 2: Lưu file trên thành định dạng XML Spreadsheet 2003, chẳng hạn tên file là Book1.xml. Bạn có thể mở file này bằng notepad để thấy nội dung dạng xml của nó. Bây giờ bạn sẽ fill dữ liệu từ một datatable nào đó ra dạng XML spreadsheet theo template mà bạn tạo ra này. Dữ liệu các cell sẽ nằm trong cặp thẻ (“TableName” là tên của sheet)

<Worksheet ss:Name=”TableName”> </Worksheet>

Bước 3: Viết ứng dụng tạo ra file text có định dạng trên bằng cách thay các dữ liệu cell mẫu trong file Book1.xml bằng dữ liệu các cell đọc được từ Datatable.

Bạn có thể tải mã nguồn ứng dụng mẫu tôi viết tại đây, trong đó tôi sử dụng một file xml để làm dữ liệu input cho datatable, bạn có thể kết nối đến các DBMS để lấy dữ liệu theo ý muốn (để đơn giản tôi đã coi các trường dữ liệu đều là kiểu string).

Chú ý rằng định dạng XML Spreadsheet có nội dung dạng XML, không phải excel chuẩn. Ở các phần sau tôi sẽ giới thiệu các thư viện tôi đã thử nghiệm trong việc kết xuất dữ liệu ra xml, excel cấu trúc BIFF (Excel 2003 trở về trước), excel 2007 (xlsx). Hy vọng sẽ có ích cho các bạn khi tìm kiếm một giải pháp thay thế cho việc sử dụng thư viện của bộ MS Office.

Chuyên mục:Programming Thẻ:, ,