You are on page 1of 15
Trong 1 class ta cn phan biét ré va lim quen cdc khdi niém sau: tru@ng(field), bin(property) va phuong thUtc (method). Sau day minh vi dy 1 class HocSinh public class HocSinh { string hoten;//khai bao thé nay thi hoten la 1 truong(field) dang private ‘1 giOng Khai béo_ private string hoten; public string HoTen //khai bao 1 bien(property) co ten la HoTen { get{ return hoten;}//d0c gié tr Ién tl field hoten gén cho bién HoTen set { hoten = value;}//lay gia tri(value) truy€n vao cho bién 4é gan cho trudng, } public HocSinhQ//phutong thtie mac dinh ty public int TimHocSinh(string ten)//day la 1 phuong thue { code xu ly tim hoc sinh } } Ban nhin lai doan code trén va ta thy rang khai bo bién khéc v6i 1 phuong thifc la n6 Khdng c6 phan du (). Phuong thtic Ia ta diing viét code Tim, Thém , Xéa, Stta..hodc 1 thao tée gi dé do ban ty viét. Ba s6 chiing ta it khai bao bién. vi sao? vida s6 cic ban méi lim quen lap trinh C# thubing khai bao 1 wu@ng(ield) 6 dang public(vd: public string hoten;). Nhung dé ba mat céc lap inh vién chuyén nghiép hay khai béo 6 dang private abu vi dy trén, N6u khai bio private nhu vy thi néu ban dang 6 1 class khéc ban sé kh6ng nhin thay 1 truding private va sé khéng truy xudt de n6, Do vay trong Cit hé trg khai bao bién di cing vi 2 phuOng thuic get va set dé gitip chiing ta giai quyét van dé vita néu. Ung voi mi 1 truOng private thi ta nén khai bao 1 bién va bién cing kiéu v6i trudng. 6 doan code trén do truGng "hoten" cé ki€u string nén khai bao bién HoTen phai cé kiéu tra vé 1a string, ‘Ta diing "get" d€ lSy gid tri cUa field gén cho bién(property), "set" ding gid tr] ca bien de ee ap gia tri cho field. N6u nhur 1 bién nao d6 ban chi cho ngu6i ta I4y(dgc) gid tr wr field Len thi thi ban chi cn ding phuong thitc get. Vi du G 1 class khac ta khai bao HocSinh hs = new HocSinh(); ki ban goi: hs.HoTen = "NguyenVanA" thi phusong thifc set{} s@ duoc goi, sau hi chay xong cau Jénh nay thi thy chat hs.hoten ="NguyenVanA" do set{hoten = value;} va khi ban ggi: string name = hs.HoTen thi phuong thttc get{} sé duge goi, gid tri cUia hs.HoTen la gid tri doc lén tir hs.hoten v6i lénh get {return hoten; } ‘Tac dung ctia 2 Phuong thtfe get va set gitip cho viéc truy xu&t gid tri cla 1 1 tru@ng dudc bao mat hon. Ching nhu la céng cu trung gian dé van chuyén gid tri cUa field v6i gid tri ngudi ding(nhap dl). Va khi da lam nhur vay ta c6 thé quén trung di va thao téc v6i bién nhu li minh dang thao téc v6i truOng vay. C6 1 cai hay nffa trong cach ding phuong thuic set la ta c6 thé kiém soat, kiém tra gid nhap vao 06 hgp 16 theo § ta ko, nu hgp 18 thi ta méii cho gén vao trudng(field). Vi du ta cé thém trudng maHS dé lu théng tin ma hoc sinh v6i ‘yéu cu ma c6 chiéu dai la 7. thi ta lam 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.ReadLineQ); } ‘maH1S = value/khi nao chieu dai chuoi nhap vao la 7 thi moi gan cho trudng maHS } t hu sau: L€p tinh C# | Ban vé kich thuéc va vi wi cia Form Lp Form cung cp nhitng thude tinh Location (vi tr) va Size (kich thuéc) ma m6i 6 control déu 06, nhung v6i mt “méo m6” mét chit. Thudc tinh Location cho biét khong cach 6 géc top left cUla cUfa s6 so v6i géc top left cUa man hinh (hoc desktop area) tO di. Ngoai ra, Location sé bj phOt 18 wt’ khi thudc tinh StartPosition du9¢ cho vé Manual. Cac tr] cla thud tinh StartPosition sé lay tir ‘enum FormStartPosition, nhu dudi day: Cac wi MO ta CenterParent Néu form durgc hién thi theo ki€u modal, thi né sé dug canh gitfa tung d6i v6i biéu mau hién th n6. Néu biéu mau nay khdng cé cha-me, thi dat dé nay giéng nhu WindowsDefaultLocation CenterScreen form duc cin gitfa man hinh. Vi dy: StartPosition = 2 FormStartPosition.CenterScreen ‘Manual form sé duge canh theo vj tri dug khai béo béi thudc tinh Location, tutOng d6i so vdi top left clia desktop area ‘WindowsDefaultLocation form duc hién thi theo vi tri mc nhién ca Windows. Néi cdch khac, sé khéng biét chinh xac biéu mu sé dugc canh vé diu WindowsDefaultBound form duc hién thi theo vi tri mc nhién cla Windows véi mét kich thu@c m&c nhién (thudc tinh Size bi bé qua). Thiét dat nay it khi ding. t6i vi thong thudng ngudi ta mudn diéu khi€n chinh xéc kich thu6c ctla biéu mau ‘Thinh thoang, ban cn cn than 1 chiit khi chon vi tri va kich thu6c d6i form ctla ban. Thi dy, ban cé thé v6 tinh tao ra 1 form qua l6n dé cé thé thich nghi v6i 1 manhinh c6 d6 phan gidi thdp. Néu ban lam viéc v6i 1 Ung dung chi d6c nh&t 1 form, gidi php t6t nhat la tao 1 form c6 thé thay d6i kich thudc. Néu ban ding 1 Ging dung v6i nhiéu ctta s6 bay lung tung thi ciu tra 10% 1a khéng don gian chit nao, ‘T&t nhién, ban sé nghi minh cé thé gidi han vi tri ctfa s6 vao vi ti ma nhomg man ‘inh cé 6 phan gidi nh6 cé thé hé tro, nhUing lam vay thi thiét thoi cho nhimmg ngudi str dung dang s6 ht man hinh c6 46 phan gidi cao (do nhu cu vé thiét k€ 46 hoa,dgc biéu mau,...). Va céuu hOi ma ti dat ra cho ban la phai tim vi ti thich hop nh&t cia form d6i v6i man hinh cUa ngudi sir dung. Mudn gidi quyét, ban can tim lai nhimng thong tin co ban d6i véi mat bang man hinh c6 san str dung dn 16p Screen Code: private void Form_Load(sender, EventArgs e) //event Load cia Form { Screen scr = Screen, PrimaryScreen; //di ly man hinh chinh this.Left = (scr. WorkingArea. Width — this. Width)/2; 3 this.Top = (scr. WordkingArea. Height — this.Height)/2;, } ‘Vi dy trén sit dung thude tinh WorkingArea cia 16p Screen. Thudc tinh nay tra vé ving lam viéc cla man hinh, trl di ving chiém dyng bdi thanh taskbar, béi thanh cng cu cp bén (docked toolbar), va bdi cdc cUta s6 cap bén (docked windows). ‘Va du6i day liét ké cdc thanh vién ctla lp Screen: Cac thanh vién M6 t& PrimaryScreen Ham static nay tra vé 1 d6i tugng Screen tugng trung cho man. hinh chinh trén hé th6ng. Bounds Ham nay tra vé 1 cu tnic Rectangle tung trung cho bién gidi cla ving hin thi (display area) 461 v6i man hinh hién hanb, WorkingArea Ham nay tra vé 1 cu triic Rectangle tugng trung cho bién gidi ving hién thi di v6i man hinh hién hanh, trir di khoang mat bang chiém dung ‘Gi thanh taskbar, thanh cong cu cap bén, va bat ctf ctta s6 cap bén nao. DeviceName Ham nay tra vé tén thiét bi duge gan lién vi 1 man hinh theo dang 1 chudi Giai thich phuong thtic phuong thtfc convert trong net C6 2 cach convert tir chudi sang s6, Cch 1 18 céch cila ban: Convert.Tolnt32(s); Céch 2 Ta: Int32.Parse(s) Minh da test cach 2 nhanh hon céch 1 ti xiu (2144-2071), Nhung céch 1 hay hon vi n6 tric quan va convert sang ki6u nao cling dude. Cn cach 2 ¢6 4 ham thoi thi pha. Cha hiéu .NET né cho 2 cai dé lam gi e Cach 2 thi tt nhién nhanh hon, viéc cung cp 2 cich chuy€n d6i nay dé phir hgp voi ting muc dich str dung, Cach convert s@ lau hon vi n6 phai kiém tra di liu tru6c khi thc hién chuy€n 46}, tay theo kiéu cén chuyén ma glé tr ra vé ctla né s6 khéc céc Parse hay ko, vi dy néu Convert.Tolnt320 m6t 461 tung null thi sé tra vé 0, con néu ding Parse() thi 6 bj ném ra 1 exception, Ngoai céch ding Parse ban c6 thé ding TryParse() 4é han ché exception, thay vi ném ra 1 exception thi phuong thttc TryParse() sé tra vé false CaNguyen ‘Toi KhOng gidi, nhung ti la duy nhéit Tim kiém: + Trang ch Bais * ce © Nhiing cai méi trong C# 2010 + Khic Ban can dua “2 triéu s6” vao combobox? Lam cach nao dé nhanh nhat? 19.11.2010 béi canh1412 2 phan héi 1 Vote 2) Control Combobox rat quen thude v6i ngudi Ip trinh,nhung da cé Itc nao ban da thém mt s6 1ugng IGn dét liu vio combobox cha? khong 2 trigu s6 xem sao? tlic sé c6 2 trigu myc trong combobox. Ac diém clia combobox, chi khi ndo todn b6 défliéu dugc dura vio trong Combobox thi ching méi show én. Bai nay xin gi6i thiéu str dung combobox két hgp véi constrol VSscrollBar va control timer. Y tung nhu sau: Ta thy rang khong cn thiét m6t s6 lugng cuc 16n dif liéu vao mot hie nhu thé, ta chi cn dua vao s6 lugng di liéu cn thiét ding b&ing chiéu cao 5 combobox! chiéu cao cia mi items. Van dé 1a khi ndo cn thdy di gid wi dtr 1i6u trong combobox? Dé 1a hic ngu6i dling kéo thanh crollbar, thanh crolibar ty dng ca combobox kh6ng xtrli duge van dé nay, vi vay ta s€ sy dung VScrollBar cla VS. é lim 16 hon, minh xin ly vi du: tim tt c& cée s6 rt hanh phiic va rt khéng hanh phiic. s6 rt hanh phtic 1a s6 c6 8 chif's6,va dé 1a sO nguyén t6 cé t6ng cac chi s6 ntta du bang nifa an ‘vi dy 10010101 la sO rét hanh phtic,con rat khéng hanh phiic la s6- nguyén t one 6 tong ntfa déu bang nifa cudi. Bu én khal bio hal mang chia sO: Listéinty Listrathanhphuc = new List Mistratkhonghanhphue = new Listeint>()s int giatricu int giatricucbo = -15 Ant Lens nt Lenebos Str dung thu8t toan san d& loc s6 nguyén t6: new Stopuatch()s //O0 thii gian thir chuong trinh chay trong bac 1 lint max = 99999999; int m= (nt)hath.Sqrt(max)s BitArray nguyento =new 8itarray (max, true); for (int p= 25 p <= ns p++) Af (nguyento.Get(p)) for (int mu = p * 2; mu < max; mu t= p) nguyento.set(au, false); for (int i < max; itt) Af (nguyento.Get(i)88i > 10000000 ) Af (KdemTratanhPhuc (4. Tostring())) Listrathanhphue.Add(i)3 else Listratkhonghanhphuc.Add(4) 3] len =1stSoRatHanhPhuc.Height/IstSoRatHanhPhuc. ItenHeights vSerolléar1.tininun = vScrollBar1.taximun = Listrathanhphuc.Count-Len; vScrollBart.Value = @; lencbo = 1stSoRatkhongHanhPhuc.Height / 1stSoRatkhongHanhPhuc.TtenHeight; vScrol18ar2.tininun = vScroll8ar2.Maximun = Listratkhonghanhphuc.Count -Len 5 vSeroll8ar2.value = a.stop()s NessogeBox. Show(a.€lapsediilliseconds.ToString())s ) ‘Thudc tinh quan trong ctla VScrollBar fa Minimum , Maximum, chiing ta ein kh@i gin {sid ti] cho né dé xac dinh khoding thay 46i, thugec tinh value 48 Lay Vscrollbar. Bitarray 1a m6t kiéu diy liu trong C# né tung dong véi khai béo “bool[] mang” ‘hung Ia viée nhanh hon va thu&n tién hon, trong truGng hop nay. ” len 6 day tinh ra 36 lung items ma ching ta thdy trong combobox, Load vio combobox: void LoadListRatkhongHanhPhuc(int batdau,int len2) tr bién tai ca for (int d= 0} 4 < Lends 444) { LetsonatkhongHanhPhuc.Ttens [4] = Listratkhonghenhphuc [batdau] batdauss; AF (batdau > Listratkhonghanhphuc.Count) breaks ? ‘Ham nay c6 téc dung dua dtf liu vao combobox, s6 lung dua vao la tiy thudc tham 36 “len2";, Tip theo, a6 c6 thé cp nha, te sr dung him tén 46 thay di ddr Hiéu ten combobox, ta can ding timer d@ kich hoat ham trén: private void timer2_Tick(object sender, Eventargs e) Af (glatricucbo |= vScroll8er2.Value) LondLiztRatkhonglanhPhue(vScrollfar2.Value, lencbo); y gistricucbo = vScrol16ar2.Value; } giatricubo kh6i gén kc du bang 1: khi ta kéo vScrollbar tic da lim value cla ‘VsscrollBar thay d6i. khi dé him s€ dugc goi, ta dinh thu6c tinh interval cUla timer li 50milisecond, Cui cing x(Ff event click ca button: private void btnSoRatKhongHanhPhuc_Click(object sender, Eventirgs e) { for (Ant 4 = @5 4 < Lencho; i++) « stsoRatkhongHanhPhuc.Ttess.Add(listratkhonghanhphucti]); y tiner2.tnabled = trues } ta chi dufa s6 lung dif liu vita di vio trong combobox: " lencho = |stSoRatKhongHanhPhuc-Height / IstSoRatK hongHanhPhuc.ltemHeight;" Lam theo céch nay, v6i bai nay chi mat khoaing 7s la da chay dude churong tinh. theo cach théng thug, minh chay thir 30" khdng xong™. ‘Trén dy minh chi trinh bay vé hiéa thi s6 rat khong hanh phic, cdn s6 hanh phiic thi ‘SqlCommandBuilder 46 lam gi Ko bi&t moi ngudi da biét t cdng dung cla n6 chUfa? Nhung minh thi méi biét (chdc thy c6 néi nhung Iu6i di hoc nén gid mdi biét ) Nguyén vin ctla 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 => N6i ngdn gon la né sé ty'thute hin nhCing cau I8nh truy vain cho minh khi minh chi dua vao 1 cau truy vin select => Dé lam gi nhl? Ty vidt cing de ma Tuy nhién gid st cai bang cUia ching ta c6 20 ct va minh phai insert or update bang d6 Ot thi céch vi6t dé ko hé kha thi Microsoft dua ra class SqlCommandBuilder 48 gidm bét viéc sai s6t khi thyc hién 8 anhiing cau truy vain d6 Céch sit dung: ~ Bu tién cn c6 1 SqlDataAdapter véi cdu truy van Select = Ti€p 46 ban cn c6 1 cai DataSet or DataTable a€ cé thé thy hién céc truy vn khéc (yéu cu la céc control nay phai 6 dtr liéu, hom minh di thyc hanh cts new DataSet va cu6i cing né ton bio 16i, bye qua ko thém lam ntfa) ~ Va diéu quan trong nifa 1a céi bang minh chon d@ truy vn bat bude phai 6 khos chinh (minh hay bj mac 18i nay tai bén SQL ko ty’ chén khod chinh =>ma edit lai bang thi gp céi 16i ni) if ko e6 khod chinh thi moi ngudi sé gp cdi théng béo nay Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information Neay dong thyc hién cau truy vn Update,tnsert,Delete Diy [a code clla Microsoft né: PHP Code: public static Dataset SelectsqlRows(string connectionstring, string queryString, string tablename) using (SqlConnection connection = new SqlConnection(connectionstring { » sqlbataAdapter adapter = new SqlDataAdapter(); adapter .SelectCommand = new Sqlconmand(queryString, connection) SqlconmandBuilder builder new SqlConmandBuilder (adapter); connection.open() ; DataSet dataset = new Dataset(); adapter.Fill(dataset, tableNane); //code to modify data in Dataset here builder .GetUpdateConmand( ); /Mithout the SqlConmandBuilder this line would fail adapter .Update(dataSet, tableName); return dataset; ) Caing chua test néfa nhtmng chac chan néu sir dung hé CSDL nao ma c6 h6 tro CommandBuilder du cé thé lim tutong ty ch xudit dif liGu ra file excel trong lap trinh Ci. Cc y q Cach xuét dif liu ra file excel trong lap trinh C#, | Khi viét mOt chuong trinh quan If ta thudng phai in &n rt nhiéu the. Vi dy in danh sich 16p, bang diém. Mt cdch truyén thong ma tr tru6c dn nay ta van hay ding 46 18 dling Crystal Report, nhung thu té ta c6 thé vit code dé cho xuat ra file Excel, word hay pad... ty ¥ thich, M6t trong nhGing céch don gian va hay dugc ding nat la xudit ra file excel. Sau day minh sé tinh bay céch xudt dtrliéu ra file excel: + Moi truting trién khai la bd tool visual Studio 2005, ho’c 2008 hay 2010 tay thich, + Ng6n ngit lap tinh la Ce. + MOt diéu kién néfa la may cia ban phai cai Microsoft office. Céng vic g6m céc bude sau: Buc 1: Reference dén d6i tugng sau: Ban chn Website/Add Reference (d6i v6i dln la website) ho&c Projecv/Add Reference (46i véi dy n 1a winform) ctfa s6 Add reference xuat hién. Ban chon tab .NET sau 46 chon Microsof. Office Inteop.Excel (chon version 11.0 hoc 12.0) BuGc 2: ‘Va trong file code C# ban kha bdo stf dung Namespace nay: using COMExcel = Microsoft .Office.Interop.excel; “COMEnxcel” li tén d6i tugng ban tao ra nén ban c6 thé ding tén kha. BUGc 3: Khéi tao cac d6i tugng (ding trong trudng h9p tao m6i mét file Excel): Ung dung Excel bao g6m cac thanh phan sau: ~ Application (chUfOng trinh excel) = Workbook (file xls lim vic, ¢6 nhiéu workbook trong app) = Worksheet (c6 nhiéu worksheet trong workbook) Nhu vay ta phai khdi tao & 3.461 tughng trén nbur sau: COMExcel. Application exApp = new COMEXcel. Application(); COMExcel. Workbook exBook = ‘exApp. Workbooks .Add(COMEXcel .X1WBATemplate. xIWBATWorksh eet); COMExcel.Worksheet exSheet = (COMExce1. Worksheet )exBook .Worksheets[1]; Buc 4: Sau dé dé lam viée v6i ting dung ban tao ra ta diing In sau: exBook .Activate(); exSheet .Name = "BangDiem"; // Ten cla sheet ban lam viéc. BU6c5: Ghi dit liéu vio sheet ban lam viéec: COMExcel.Range tenTruong = 10 (COMExcel. Range )exSheet .Cells[1, 1]; //Ghi di 1iéu len hang 1, c6t 1 trong vung lam viée cla Excel thye chat la 6 At; tenTruong.Font.Size = 18; // Cé chit 18. tenTruong.Font Bold = true; //Cho in dam tenTruong.Value2 = "Gia tri can ghi vao"; ‘Buc 6: Hién thj chuong tinh Excel: exApp.Visible = true; ‘Trén diy 1a céc buGe co ban dé ban tao ra m6t file Excel, ghi dt 1iGu vao file Excel. TU nhting diéu nay ban cé thé diing né dé ghi dr liéu ma ban cé trong, CSDL ra file Excel bng céch: + Tao DataTable chtfa dtr iu ban mu6n Xudt ra Excel, + RGi thyc hién céc buGe nhu'trén 46 ghi dit iu ra Excel: (Khi ghi ta ghi timg record mét ra hang va cOt Excel tuong Ung). ‘Trén day minh da trinh bay xong phn xu&t dG liu ra Excel. Khi nao c6 thot agian minh sé trinh bay cach ding C# dé két n6i dén di liGu la file Excel d& doc tt iu trong file Excel 46. Day Id mOt class trong qué trinh lim viéc nghién ctu durgc. Né cho phép xudit tt 1tiéng viét trong PHP. 1. File load dit iu PHP Code: array (‘Name', ‘Surname! ), array('Schwarz', 'Oliver'), array('Test', ‘Peter') yi // generate file (constructor parameters are optional) $x1s = new Excel_XML('UTF-8", false, ‘Workflow Management ); $x1s->addarray ($data); ‘$x1s->generateXML( 'Output_Report_WFM" ); cS 2.File thu vién - dt tén cho file thur vién la : php-excel.class.php PHP Code: * @version 1.0 “7 ye * Generating excel documents on-the-fly from PHPS * Uses the excel XML-specification to generate a native * XML document, readable/processable by excel. * @package utilities * @subpackage Excel * @author Oliver Schwarz * aversion 1.1 * @todo Tssue #4: Internet Explorer 7 does not work well with the given header * @todo Add option to give out first line as header (bold text) * @tode Add option to give out last line as footer (bold text) * @tode Add option to write to file =f class Excel XML { ne * Header (of document) * @var string “ private $header = "\n"; * Footer (of document) * @var string a private $footer "" i * 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; 2 jee * 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 '@' (zero)! Gparam string $sEncoding Encoding to be used (defaults to UT Fa) * Gparam boolean $bConvertTypes Convert variables to field spe cification * Gparam string $sWorksheetTitle Title for the worksheet v public function _construct ($sEncoding = 'UTF-8', $bConvertTypes false, $sWorksheetTitle = 'Tablei') $this->bconvertTypes = SbConvertTypes; Sthis->setEncoding( $sEncoding); Sthis-seetuorksheerTitla(SsunrksheetTit le); ? * set encoding * @param string Encoding type to set “ public function setencoding($sencoding) Sthis->séncoding = $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 setorksheetTitle ($title) $title = preg_replace ("/[\\\|:|\V/IN7IN*IMIMI", stitle); $title = substr (Stitle, ®, 31); $this->sworksheetTitle + stitle; 1B ? a * Add row * Adds a single row to the document. If set to true, self::bco nvert Types * 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 (Sarray) Scells = ""; foreach’ (Sarray as $k Stype = 'String’; Lf (Sthis->bConvert Types true @& is numeri (Sv): stype endif; Sv = htmlentities($v, ENT_COMPAT, $this- "Number; >s€ncoding) ; Scells . $v "\n"; ‘endforeach; $this->Lines[] = "\n"; ? pe * Add an array to the dacument * @param array 2-dimensional array */ public function addarray (array) { foreach (Sarray as $k => $v) Sthis->addRow ($v); ? pe * Generate the excel file * @param string $filename Nane of excel file to generate (. 1s) ” public function generatexML ($filename = ‘excel-export') { // correct/validate filename $filename = preg_replace('/[*aA-2Z0-9\_\-]/', '', $file name) ; // deliver header (as recommended in php manual) header("content-Type: application/vnd.ms-excel; charset . Sthis->sencoding) header sxs\"); ‘Content-Disposition: inline; filename: "Sti lename . 14 // print out document to the browser // need to use stripslashes for the dann ">" echo stripslashes (sprintf(Sthis->header, Sthis- >sencoding)); echo "\ncWorksheet ss:Name=\"" , $this->sWorksheetTitle ~ "\>\neTable>\n"; foreach (Sthis->lines as $line) echo SLint ‘echo "\n\n"; echo Sthis->footer; 15

You might also like