Trong 1 class ta cần phân biệt rõ và làm quen các khái niệm sau: trường(field), biến(property) và phương thức (method)

Sau đây mình ví dụ 1 class HocSinh public class HocSinh { string hoten;//khai báo thế này thì hoten là 1 truong(field) dạng private // giống khai báo private string hoten; public string HoTen //khai bao 1 bien(property) co ten la HoTen { get{ return hoten;}//đọc giá trị lên từ field hoten gán cho biến HoTen set { hoten = value;}//lấy giá trị(value) truyền vào cho biến để gán cho trường } public HocSinh()//phương thức mặc định {} public int TimHocSinh(string ten)//day la 1 phuong thuc { //code xu ly tim hoc sinh } } Bạn nhìn lại đoạn code trên và ta thấy rằng khai báo biến khác với 1 phương thức là nó không có phần dấu (). Phương thức là ta dùng viết code Tìm, Thêm , Xóa, Sửa hoặc 1 thao tác gì đó do bạn tự viết. Đa số chúng ta ít khai báo biến. vì sao? vì đa số các bạn mới làm quen lập trinh C# thường khai báo 1 trường(field) ở dạng public(vd: public string hoten. Nhưng để baỏ mật các lập trình viên chuyên

pdf15 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 2768 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Trong 1 class ta cần phân biệt rõ và làm quen các khái niệm sau: trường(field), biến(property) và phương thức (method), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Trong 1 class ta c n phân bi t rõ và làm quen các khái ni m sau: tr ng(field),ầ ệ ệ ườ bi n(property) và ph ng th c (method). Sau đây mình ví d 1 class HocSinhế ươ ứ ụ public class HocSinh { string hoten;//khai báo th này thì hoten là 1 truong(field) d ng privateế ạ // gi ng khai báo private string hoten;ố public string HoTen //khai bao 1 bien(property) co ten la HoTen { get{ return hoten;}//đ c giá tr lên t field hoten gán cho bi n HoTenọ ị ừ ế set { hoten = value;}//l y giá tr (value) truy n vào cho bi n đ gán cho tr ngấ ị ề ế ể ườ } public HocSinh()//ph ng th c m c đ nhươ ứ ặ ị {} public int TimHocSinh(string ten)//day la 1 phuong thuc { //code xu ly tim hoc sinh } } B n nhìn l i đo n code trên và ta th y r ng khai báo bi n khác v i 1 ph ngạ ạ ạ ấ ằ ế ớ ươ th c là nó không có ph n d u (). Ph ng th c là ta dùng vi t code Tìm, Thêm ,ứ ầ ấ ươ ứ ế Xóa, S a..ho c 1 thao tác gì đó do b n t vi t. Đa s chúng ta ít khai báo bi n. vìử ặ ạ ự ế ố ế sao? vì đa s các b n m i làm quen l p trinh C# th ng khai báo 1 tr ng(field)ố ạ ớ ậ ườ ườ d ng public(vd: public string hoten;). ở ạ Nh ng đ ba m t các l p trình viên chuyên nghi p hay khai báo d ng privateư ể ỏ ậ ậ ệ ở ạ nh ví d trên. N u khai báo private nh v y thì n u b n đang 1 class khác b nư ụ ế ư ậ ế ạ ở ạ s không nhìn th y 1 tr ng private và s không truy xu t đc nó. Do v y trong C#ẽ ấ ườ ẽ ấ ậ h tr khai báo bi n đi cùng v i 2 ph ng th c get và set đ giúp chúng ta gi iỗ ợ ế ớ ươ ứ ể ả quy t v n đ v a nêu. ng v i m i 1 tr ng private thì ta nên khai báo 1 bi n vàế ấ ề ừ Ứ ớ ỗ ườ ế bi n cùng ki u v i tr ng. đo n code trên do tr ng "hoten" có ki u string nênế ể ớ ườ ở ạ ườ ể khai báo bi n HoTen ph i có ki u tr v là string.ế ả ể ả ề Ta dùng "get" đ l y giá tr c a field gán cho bi n(property), "set" dùng giá tr c aể ấ ị ủ ế ị ủ bi n đ thi t l p giá tr cho field.ế ể ế ậ ị N u nh 1 bi n nào đó b n ch cho ng i ta l y(đ c) giá tr t field lên thôi thìế ư ế ạ ỉ ườ ấ ọ ị ừ b n ch c n dùng ph ng th c get.ạ ỉ ầ ươ ứ Ví d 1 class khác ta khai báoụ ở HocSinh hs = new HocSinh(); khi b n g i: hs.HoTen = "NguyenVanA" thì ph ng th c set{} s đ c g i, sauạ ọ ươ ứ ẽ ượ ọ khi ch y xong câu l nh này thì th c ch t hs.hoten ="NguyenVanA" do set{hoten =ạ ệ ự ấ value;} và khi b n g i: string name = hs.HoTen thì ph ng th c get{} s đ c g i, giá trạ ọ ươ ứ ẽ ượ ọ ị c a hs.HoTen là giá tr đ c lên t hs.hoten v i l nh get {return hoten;}ủ ị ọ ừ ớ ệ Tác d ng c a 2 Ph ng th c get và set giúp cho vi c truy xu t giá tr c a 1ụ ủ ươ ứ ệ ấ ị ủ 1 tr ng đ c b o m t h n. Chúng nh là công c trung gian đ v n chuy n giáườ ượ ả ậ ơ ư ụ ể ậ ể tr c a field v i giá tr ng i dùng(nh p dl). Và khi đã làm nh v y ta có th quênị ủ ớ ị ườ ậ ư ậ ể tr ng đi và thao tác v i bi n nh là mình đang thao tác v i tr ng v y. ườ ớ ế ư ớ ườ ậ Có 1 cái hay n a trong cách dùng ph ng th c set là ta có th ki m soát, ki m traữ ươ ứ ể ể ể giá nh p vào có h p l theo ý ta ko. n u h p l thì ta m i cho gán vàoậ ợ ệ ế ợ ệ ớ tr ng(field). Ví d ta có thêm tr ng maHS đ l u thông tin mã h c sinh v iườ ụ ườ ể ư ọ ớ yêu c u mã có chi u dài là 7. thì ta làm string maHS;ầ ề public string MaHS { get { return maHS; } set { while (value.Length != 7)// kiem tra neu ko hop le thi nhap lai { Console.Write("\n Ma khong hop le! Nhap lai = "); value = Console.ReadLine(); } maHS = value;//khi nao chieu dai chuoi nhap vao la 7 thi moi gan cho tr ng maHSườ } } nh sau:ư L p trình C# | Bàn v kích th c và v trí c a Formậ ề ướ ị ủ L p ớ Form cung c p nh ng thu c tính Location (v trí) và Size (kích th c) màấ ữ ộ ị ướ m i ô control đ u có, nh ng v i m t “méo mó” m t chút. Thu c tính Locationỗ ề ư ớ ộ ộ ộ cho bi t kho ng cách góc top left c a c a s so v i góc top left c a ế ả ở ủ ử ổ ớ ủ màn hình (ho c desktop area) tr đi. Ngoài ra, Location s b ph t l tr khi thu c tínhặ ở ẽ ị ớ ờ ừ ộ StartPosition đ c cho v ượ ề Manual. Các tr c a thu c tính StartPosition s l y tị ủ ộ ẽ ấ ừ enum FormStartPosition, nh d i đây:ư ướ Các trị Mô tả CenterParent N u form đ c hi n th theo ki u modal, thì nó s đ c canh gi aế ượ ể ị ể ẽ ượ ữ t ng đ i v i bi u m u hi n th nó. N u bi u m u này không có cha-m , thì đ tươ ố ớ ể ẫ ể ị ế ể ẫ ẹ ặ đ này gi ng nh ể ố ư WindowsDefaultLocation CenterScreen form đ c căn gi a ượ ữ màn hình. Ví d : StartPosition =ụ 2 FormStartPosition.CenterScreen Manual form s đ c canh theo v trí đ c khai báo b i thu c tính Location,ẽ ượ ị ượ ở ộ t ng đ i so v i top left c a desktop areaươ ố ớ ủ WindowsDefaultLocation form đ c hi n th theo v trí m c nhiên c a Windows.ượ ể ị ị ặ ủ Nói cách khác, s không bi t chính xác bi u m u s đ c canh v đâuẽ ế ể ẫ ẽ ượ ề WindowsDefaultBound form đ c hi n th theo v trí m c nhiên c a Windows v iượ ể ị ị ặ ủ ớ m t kích th c m c nhiên (thu c tính Size b b qua). Thi t đ t này ít khi dùngộ ướ ặ ộ ị ỏ ế ặ t i vì thông th ng ng i ta mu n đi u khi n chính xác kích th c c a bi uớ ườ ườ ố ề ể ướ ủ ể m uẫ Th nh tho ng, b n c n c n th n 1 chút khi ch n v trí và kích th c đ i form c aỉ ả ạ ầ ẩ ậ ọ ị ướ ố ủ b n. Thí d , b n có th vô tình t o ra 1 form quá l n đ có th thích nghi v i 1ạ ụ ạ ể ạ ớ ể ể ớ màn hình có đ phân gi i th p. N u b n làm vi c v i 1 ng d ng ch đ c nh t 1ộ ả ấ ế ạ ệ ớ ứ ụ ỉ ộ ấ form, gi i pháp t t nh t là t o 1 form có th thay đ i kích th c. N u b n dùng 1ả ố ấ ạ ể ổ ướ ế ạ ng d ng v i nhi u c a s bay lung tung thì câu tr l i là không đ n gi n chútứ ụ ớ ề ử ổ ả ờ ơ ả nào. T t nhiên, b n s nghĩ mình có th gi i h n v tr c a s vào v trí mà nh ng ấ ạ ẽ ể ớ ạ ị ị ử ổ ị ữ màn hình có đ phân gi i nh có th h tr , nh ng làm v y thì thi t thòi cho nh ngộ ả ỏ ể ỗ ợ ư ậ ệ ữ ng i s d ng đang s h u ườ ử ụ ở ữ màn hình có đ phân gi i cao (do nhu c u v thi tộ ả ầ ề ế k đ h a,đ c bi u m u,…). Và câu h i mà tôi đ t ra cho b n là ph i tìm v tríế ồ ọ ọ ể ẫ ỏ ặ ạ ả ị thích h p nh t c a form đ i v i ợ ấ ủ ố ớ màn hình c a ng i s d ng. Mu n gi i quy t,ủ ườ ử ụ ố ả ế b n c n tìm l i nh ng thông tin c b n đ i v i m t b ng ạ ầ ạ ữ ơ ả ố ớ ặ ằ màn hình có s n sẵ ử d ng đ n l p ụ ế ớ Screen Code: private void Form_Load(sender,EventArgs e) //event Load c a Formủ { Screen scr = Screen.PrimaryScreen; //đi l y ấ màn hình chính this.Left = (scr.WorkingArea.Width – this.Width)/2; 3 this.Top = (scr.WordkingArea.Height – this.Height)/2; } Ví d trên s d ng thu c tính WorkingArea c a l p Screen. Thu c tính này trụ ử ụ ộ ủ ớ ộ ả v vùng làm vi c c a ề ệ ủ màn hình, tr đi vùng chi m d ng b i thanh taskbar, b iừ ế ụ ở ở thanh công c c p b n (docked toolbar), và b i các c a s c p b n (dockedụ ậ ế ở ử ổ ậ ế windows). Và d i đây li t kê các thành viên c a l p Screen:ướ ệ ủ ớ Các thành viên Mô tả PrimaryScreen Hàm static này tr v 1 đ i t ng Screen t ng tr ng cho ả ề ố ượ ượ ư màn hình chính trên h th ng.ệ ố Bounds Hàm này tr v 1 c u trúc Rectangle t ng tr ng cho biên gi i c a vùngả ề ấ ượ ư ớ ủ hi n th (display area) đ i v i ể ị ố ớ màn hình hi n hành.ệ WorkingArea Hàm này tr v 1 c u trúc Rectangle t ng tr ng cho biên gi iả ề ấ ượ ư ớ vùng hi n th đ i v i ể ị ố ớ màn hình hi n hành, tr đi kho ng m t b ng chi m d ngệ ừ ả ặ ằ ế ụ b i thanh taskbar, thanh công c c p b n, và b t c c a s c p b n nào.ở ụ ậ ế ấ ứ ử ố ậ ế DeviceName Hàm này tr v tên thi t b đ c g n li n v i 1 ả ề ế ị ượ ắ ề ớ màn hình theo d ngạ 1 chu i ỗ G ai thích ph ng th c ph ng th c convert trong net ỉ ươ ứ ươ ứ Có 2 cách convert t chu iừ ỗ sang s . Cách 1 là cách c a b n: Convert.ToInt32(s);ố ủ ạ Cách 2 là: Int32.Parse(s) Mình đã test cách 2 nhanh h n cách 1 tí xíu (2144-2071). Nh ng cách 1 hay h n vì nóơ ư ơ tr c quan và convert sang ki u nào cũng đ c. Còn cách 2 có 4 hàm thôi thì ph i. Chự ể ượ ả ả hi u .NET nó cho 2 cái đ làm gì ể ể Cách 2 thì t t nhiên nhanh h n, vi c cung c p 2 cách chuy n đ i này đ phù h p v iấ ơ ệ ấ ể ổ ể ợ ớ t ng m c đích s d ng. Cách convert s lâu h n vì nó ph i ki m tra d li u tr c khiừ ụ ử ụ ẽ ơ ả ể ữ ệ ướ th c hi n chuy n đ i, tùy theo ki u c n chuy n mà giá tr tr v c a nó s khác cácự ệ ể ổ ể ầ ể ị ả ề ủ ẽ 4 Parse hay ko, ví d n u Convert.ToInt32() m t đ i t ng null thì s tr v 0, còn n uụ ế ộ ố ượ ẽ ả ề ế dùng Parse() thì s b ném ra 1 exception. Ngoài cách dùng Parse b n có th dùng TryParse() đ h nẽ ị ạ ể ể ạ ch exception, thay vì ném ra 1 exception thì phu ng th c TryParse() s tr v falseế ơ ứ ẽ ả ề Ca Nguyen Tôi không gi i, nh ng tôi là duy nh tỏ ư ấ Tìm ki m: ế • Trang chủ Bài vi tế Ph n h iả ồ • C# o Nh ng cái m i trong C# 2010ữ ớ • Khác • .Net 4.0 ← MEF (Managed Extensibility Framework) S d ng C# k t n iử ụ ế ố Database → B n c n đ a “2 tri u s ” vàoạ ầ ư ệ ố combobox? Làm cách nào để nhanh nh t?ấ 19.11.2010 b i ở canh1412 2 ph n h iả ồ 1 Vote Control Combobox r t quen thu c v i ng i l p trình,nh ng đã có lúc nào b n đã thêmấ ộ ớ ườ ậ ư ạ m t s l ng l n d li u vào combobox ch a? kho ng 2 tri u s xem sao? t c s có 2ộ ố ượ ớ ữ ệ ư ả ệ ố ứ ẽ tri u m c trong combobox….ệ ụ Đ c đi m c a combobox, ch khi nào toàn b d li u đ c đ a vào trong Comboboxặ ể ủ ỉ ộ ữ ệ ượ ư thì chúng m i show lên.ớ Bài này xin gi i thi u s d ng combobox k t h p v i constrol VSscrollBar và controlớ ệ ử ụ ế ợ ớ timer. Ý t ng nh sau: Ta th y r ng không c n thi t m t s l ng c c l n d li u vào m tưở ư ấ ằ ầ ế ộ ố ượ ự ớ ữ ệ ộ lúc nh th , ta ch c n đ a vào s l ng d li u c n thi t đúng b ng chi u caoư ế ỉ ầ ư ố ượ ữ ệ ầ ế ằ ề 5 combobox/ chi u cao c a m i items. V n đ là khi nào c n th y đ i giá tr d li uề ủ ỗ ấ ề ầ ấ ổ ị ữ ệ trong combobox? Đó là lúc ng i dùng kéo thanh crollbar, thanh crollbar t đ ng c aườ ự ộ ủ combobox không x lí đ c v n đ này, vì v y ta s s d ng VScrollBar c a VS.ử ượ ấ ề ậ ẽ ự ụ ủ Đ làm rõ h n, mình xin l y ví d : tìm t t c các s r t h nh phúc và r t không h nhể ơ ấ ụ ấ ả ố ấ ạ ấ ạ phúc. s r t hành phúc là s có 8 ch s ,và đó là s nguyên t có t ng các ch s n aố ấ ố ữ ố ố ố ổ ữ ố ữ đ u b ng n a cu i, ví d 10010101 là s r t h nh phúc,còn r t không h nh phúc là sầ ằ ữ ố ụ ố ấ ạ ấ ạ ố nguyên t không có t ng n a đ u b ng n a cu i.ố ổ ứ ầ ằ ữ ố Ta thi t kê giao di n: (VS2010-C#)ế ệ Đâu tiên khai báo hai m ng ch a s :ả ứ ố S d ng thu t toán sàn đ l c s nguyên t :ử ụ ậ ể ọ ố ố 6 Thu c tính quan tr ng c a VScrollBar là Minimum , Maximum, chúng ta c n kh i gánộ ọ ủ ầ ở giá tr cho nó đ xác đ nh kho ng thay đ i, thu c tính value đ l y giá tr hi n t i c aị ể ị ả ổ ộ ể ấ ị ệ ạ ủ VScrollbar . Bitarray là m t ki u d li u trong C# nó t ng đ ng v i khai báo “bool[] mang”ộ ể ự ệ ươ ươ ớ nh ng là vi c nhanh h n và thu n ti n h n, trong tr ng h p này. ” len đây tính raư ệ ơ ậ ệ ơ ườ ợ ở s l ng items mà chúng ta th y trong combobox,ố ượ ấ Load vào combobox: Hàm này có tác d ng đ a d li u vào combobox, s l ng đ a vào là tùy thu c thamụ ư ữ ệ ố ượ ư ộ s “len2″;.ố Ti p theo, đ có th c p nh t, t c s d ng hàm trên đ thay đ i d li u trênế ể ể ậ ậ ứ ử ụ ể ổ ữ ệ combobox, ta c n dùng timer đ kích ho t hàm trên:ầ ể ạ 7 giatricubo kh i gán lúc đ u b ng 1: khi ta kéo vScrollbar t c đã làm value c aở ầ ằ ứ ủ VScrollBar thay đ i. khi đó hàm s đ c g i, ta đình thu c tình interval c a timer làổ ẽ ượ ọ ộ ủ 50milisecond. Cu i cùng x lí event click c a button:ố ử ủ ta ch đ a s l ng d li u v a đ vào trong combobox: " lencbo =ỉ ư ố ượ ữ ệ ừ ủ lstSoRatKhongHanhPhuc.Height / lstSoRatKhongHanhPhuc.ItemHeight;" Làm theo cách này, v i bài này ch m t kho ng 7s là đã ch y đ c ch ng trình. theoớ ỉ ấ ả ạ ượ ươ cách thông th ng, mình ch y th 30' không xong^^.ườ ạ ử Trên đây mình ch trình bày v hi n th s r t không h nh phúc, còn s h nh phúc thìỉ ề ệ ị ố ấ ạ ố ạ t ng t nhé!ươ ự Source code:T i vả ề SqlCommandBuilder đ làm gìể Ko bi t m i ng i đã bi t công d ng c a nó ch a? Nh ng mình thì m i bi t (ch cế ọ ườ ế ụ ủ ư ư ớ ế ắ th y có nói nh ng l i đi h c nên gi m i bi t ầ ư ườ ọ ờ ớ ế ) Nguyên văn c a Microsoftủ you can create a SqlCommandBuilder object to automatically generate Transact- SQL statements for single-table updates if you set the SelectCommand property of the SqlDataAdapter => Nói ng n g n là nó s t th c hi n nh ng câu l nh truy v n cho mình khi mình chắ ọ ẽ ự ự ệ ữ ệ ấ ỉ đ a vào 1 câu truy v n select => Đ làm gì nh ? T vi t cũng đc màư ấ ể ỉ ự ế Tuy nhiên gi s cái b ng c a chúng ta có 20 c t và mình ph i insert or update b ng đóả ử ả ủ ộ ả ằ c t thì cách vi t đó ko h kh thi.ộ ế ề ả Microsoft đ a ra class SqlCommandBuilder đ gi m b t vi c sai sót khi th c hi nư ể ả ớ ệ ự ệ 8 nh ng câu truy v n đóữ ấ Cách s d ng:ử ụ - Đ u tiên c n có 1 SqlDataAdapter v i câu truy v n Select ầ ầ ớ ấ - Ti p đó b n c n có 1 cái DataSet or DataTable đ có th th c hi n các truy v n khácế ạ ầ ể ể ự ệ ấ (yêu c u là các control này ph i có d li u, hôm mình đi th c hành c new DataSet vàầ ả ữ ệ ự ứ cu i cùng nó toàn báo l i, b c quá ko thèm làm n a)ố ỗ ự ữ - Và đi u quan tr ng n a là cái b ng mình ch n đ truy v n b t bu c ph i có khoáề ọ ữ ả ọ ể ấ ắ ộ ả chính (mình hay b m c l i này t i bên SQL ko t chèn khoá chính =>mà edit l i b ngị ắ ỗ ạ ự ạ ả thì g p ặ cái l i nìỗ ) if ko có khoá chính thì m i ng i s g p cái thông báo nàyọ ườ ẽ ặ Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information Ngay dòng th c hi n câu truy v n Update,Insert,Deleteự ệ ấ Đây là code c a Microsoft nè:ủ PHP Code: public static DataSet SelectSqlRows(string connectionString, string queryString, string tableName) { using (SqlConnection connection = new SqlConnection(connectionString )) { SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(queryString, connection) ; SqlCommandBuilder builder = new SqlCommandBuilder(adapter); connection.Open(); DataSet dataSet = new DataSet(); adapter.Fill(dataSet, tableName); //code to modify data in DataSet here builder.GetUpdateCommand(); //Without the SqlCommandBuilder this line would fail adapter.Update(dataSet, tableName); return dataSet; } } Cũng ch a test n a nh ng ch c ch n n u s d ng h CSDL nào mà có h trư ữ ư ắ ắ ế ử ụ ệ ỗ ợ CommandBuilder đ u có th làm t ng tề ể ươ ự ách xu t d li u ra file excel trong l p trình C#.ấ ữ ệ ậ 9 Cách xu t d li u ra file excel trong l p trình C#.ấ ữ ệ ậ Khi vi t m t ch ng trình qu n lý ta th ng ph i in n r t nhi u th . Ví d inế ộ ươ ả ườ ả ấ ấ ề ứ ụ danh sách l p, b ng đi m….ớ ả ể M t cách truy n th ng mà t tr c đ n nay ta v n hay dùng đó là dùng Crystalộ ề ố ừ ướ ế ẫ Report, nh ng th c t ta có th vi t code đ cho xu t ra file Excel, word hayư ự ế ể ế ể ấ pdf… tùy ý thích. M t trong nh ng cách đ n gi n và hay đ c dùng nh t là xu t ra file excel. Sauộ ữ ơ ả ượ ấ ấ đây mình s trình bày cách xu t d li u ra file excel:ẽ ấ ữ ệ + Môi tr ng tri n khai là b tool visual Studio 2005, ho c 2008 hay 2010 tùyườ ể ộ ặ thích. + Ngôn ng l p trình là C#.ữ ậ + M t đi u ki n n a là máy c a b n ph i cài Microsoft office.ộ ề ệ ữ ủ ạ ả Công vi c g m các b c sau:ệ ồ ướ B c 1ướ : Reference đ n đ i t ng sau:ế ố ượ B n ch n Website/Add Reference (đ i v i d án là website) ho c Project/Addạ ọ ố ớ ự ặ Reference (đ i v i d án là winform) c a s Add reference xuât hi n. B n ch nố ớ ự ử ổ ệ ạ ọ tab .NET sau đó ch n ọ Microsoft.Office.Interop.Excel (ch n version 11.0 ho c 12.0)ọ ặ B c 2ướ : Và trong file code C# b n khai báo s d ng Namespace này:ạ ử ụ using COMExcel = Microsoft.Office.Interop.Excel; “COMExcel” là tên đ i t ng b n t o ra nên b n có th dùng tên khác.ố ượ ạ ạ ạ ể B c 3ướ : Kh i t o các đ i t ng (dùng trong tr ng h p t o m i m t fileở ạ ố ượ ườ ợ ạ ớ ộ Excel): ng d ng Excel bao g m các thành ph n sau:Ứ ụ ồ ầ - 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 ta ph i kh i t o c 3 đ i t ng trên nh sau:ư ậ ả ở ạ ả ố ượ ư COMExcel.Application exApp = new COMExcel.Application(); COMExcel.Workbook exBook = exApp.Workbooks.Add(COMExcel.XlWBATemplate.xlWBATWorksh eet); COMExcel.Worksheet exSheet = (COMExcel.Worksheet)exBook.Worksheets[1]; B c 4ướ : Sau đó đ làm vi c v i ng d ng b n t o ra ta dùng l nh sau:ể ệ ớ ứ ụ ạ ạ ệ exBook.Activate(); exSheet.Name = "BangDiem"; // Tên c a sheet b n làmủ ạ vi c.ệ B c 5ướ : Ghi d li u vào sheet b n làm vi c:ữ ệ ạ ệ COMExcel.Range tenTruong = 10 (COMExcel.Range)exSheet.Cells[1, 1]; //Ghi d li u lênữ ệ hàng 1, c t 1 trong vùng làm vi c c a Excel th c ch tộ ệ ủ ự ấ là ô A1; tenTruong.Font.Size = 18; // C ch 18.ỡ ữ tenTruong.Font.Bold = true; //Cho in đ mậ tenTruong.Value2 = "Giá tr c n ghi vào”;ị ầ B c 6ướ : Hi n th ch ng trình Excel:ể ị ươ exApp.Visible = true; Trên đây là các b c c b n đ b n t o ra m t file Excel, ghi d li u vào fileướ ơ ả ể ạ ạ ộ ữ ệ Excel. T nh ng đi u này b n có th dùng nó đ ghi d li u mà b n có trongừ ữ ề ạ ể ể ữ ệ ạ CSDL ra file Excel b ng cách:ằ + T o DataTable ch a d li u b n mu n Xu t ra Excel.ạ ứ ữ ệ ạ ố ấ + R i th c hi n các b c nh trên đ ghi d li u ra Excel: (Khi ghi ta ghi t ngồ ự ệ ướ ư ể ữ ệ ừ record m t ra hàng và c t Excel t ng ng).ộ ộ ươ ứ Trên đây mình đã trình bày xong ph n xu t d li u ra Excel. Khi nào có th iầ ấ ữ ệ ờ gian mình s trình bày cách dùng C# đ k t n i đ n d li u là file Excel đ đ cẽ ể ế ố ế ữ ệ ể ọ d li u trong file Excel đó.ữ ệ Đây là m t class trong quá trình làm vi c nghiên c u đ c. Nó cho phép xu t t tộ ệ ứ ượ ấ ố ti ng vi t trong PHP. ế ệ 1. File load d li uữ ệ PHP Code: <?php // load library require 'php-excel.class.php'; // create a simple 2-dimensional array $data = array( 1 => array ('Name', 'Surname'), array('Schwarz', 'Oliver'), array('Test', 'Peter') ); // generate file (constructor parameters are optional) $xls = new Excel_XML('UTF-8', false, 'Workflow Management'); $xls->addArray($data); $xls->generateXML('Output_Report_WFM'); ?> 2.File th vi n - đ t tên cho file th vi n là : php-excel.class.phpư ệ ặ ư ệ PHP Code: <?php /** * Simple excel generating from PHP5 * * @package Utilities * @license 11 * @author Oliver Schwarz * @version 1.0 */ /** * Generating excel documents on-the-fly from PHP5 * * Uses the excel XML-specification to generate a native * XML document, readable/processable by excel. * * @package Utilities * @subpackage Excel * @author Oliver Schwarz * @version 1.1 * * @todo Issue #4: Internet Explorer 7 does not work well with the given header * @todo Add option to give out first line as header (bold text) * @todo Add option to give out last line as footer (bold text) * @todo Add option to write to file */ class Excel_XML { /** * Header (of document) * @var string */ private $header = "\n<W orkbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x= \"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas- microsoft-com:office:spreadsheet\" xmlns:html=\" C-html40\">"; /** * Footer (of document) * @var string */ private $footer = ""; /** * Lines to output in the excel document * @var array */ private $lines = array(); /** * Used encoding * @var string */ private $sEncoding; /** * Convert variable types * @var boolean */ private $bConvertTypes; 12 /** * Worksheet title * @var string */ private $sWorksheetTitle; /** * Constructor * * The constructor allows the setting of some additional * parameters so that the library may be configured to * one's needs. * * On converting types: * When set to true, the library tries to identify the type of * the variable value and set the field specification for Excel * accordingly. Be careful with article numbers or postcodes * starting with a '0' (zero)! * * @param string $sEncoding Encoding to be used (defaults to UT F-8) * @param boolean $bConvertTypes Convert variables to field spe cification * @param string $sWorksheetTitle Title for the worksheet */ public function __construct($sEncoding = 'UTF-8', $bConvertTypes = false, $sWorksheetTitle = 'Table1') { $this->bConvertTypes = $bConvertTypes; $this->setEncoding($sEncoding); $this->setWorksheetTitle($sWorksheetTitle); } /** * Set encoding * @param string Encoding type to set */ public function setEncoding($sEncoding) { $this->sEncoding = $sEncoding; } /** * Set worksheet title * * Strips out not allowed characters and trims the * title to a maximum length of 31. * * @param string $title Title for worksheet */ public function setWorksheetTitle ($title) { $title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title); $title = substr ($title, 0, 31); $this->sWorksheetTitle = $title; 13 } /** * Add row * * Adds a single row to the document. If set to true, self::bCo nvertTypes * checks the type of variable and returns the specific field s ettings * for the cell. * * @param array $array One-dimensional array with row content */ private function addRow ($array) { $cells = ""; foreach ($array as $k => $v): $type = 'String'; if ($this->bConvertTypes === true && is_numeri c($v)): $type = 'Number'; endif; $v = htmlentities($v, ENT_COMPAT, $this- >sEncoding); $cells .= "" . $v . "\n"; endforeach; $this->lines[] = "\n" . $cells . "\n"; } /** * Add an array to the document * @param array 2-dimensional array */ public function addArray ($array) { foreach ($array as $k => $v) $this->addRow ($v); } /** * Generate the excel file * @param string $filename Name of excel file to generate (...x ls) */ public function generateXML ($filename = 'excel-export') { // correct/validate filename $filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $file name); // deliver header (as recommended in php manual) header("Content-Type: application/vnd.ms-excel; charset =" . $this->sEncoding); header("Content-Disposition: inline; filename=\"" . $fi lename . ".xls\""); 14 // print out document to the browser // need to use stripslashes for the damn ">" echo stripslashes (sprintf($this->header, $this- >sEncoding)); echo "\nsWorksheetTitle . "\">\n\n"; foreach ($this->lines as $line) echo $line; echo "\n\n"; echo $this->footer; } } ?> 15

Các file đính kèm theo tài liệu này:

  • pdfTrong 1 class ta cần phân biệt rõ và làm quen các khái niệm sau- trường(field), biến(property) và p_.pdf