วันนี้ตอนที่กำลังเขียน code โดยใช้ PHPExcel โดยพยามแต่งรูปแบบไฟล์ excel ให้มันสวยงามอยู่ เพื่อนโปรแกรมเมอร์อีกคน เตือนด้วยความหวังดีว่า จัดไปก็เท่านั้นเดี๋ยว user ก็พิมพ์ให้มันพัง ออกแบบให้พิมพ์แนวนอน แต่พี่แกก็ print ออกมาเป็นแบบแนวตั้ง
กลับมาบ้านลองหาคู่มือดู PHPExcel มันกำหนด page setup ให้เอกสารได้ด้วย ^_^ ก็เลยลองเขียนดู
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | <?php include 'vendor/phpoffice/phpexcel/Classes/PHPExcel.php' ; $objPHPExcel = new PHPExcel(); /* Set default style */ $defaultStyle = $objPHPExcel ->getDefaultStyle(); $defaultStyle ->getFont() ->setName( 'Arial' ) ->setSize(11); $defaultStyle ->getNumberFormat() ->setFormatCode( 'yyyy-mm-dd' ); /* Set document properties */ $title = 'Exports_Datas_' . date ( 'Y-m-d_H:i' ); $objPHPExcel ->getProperties()->setCreator( 'Pitt Phunsanit' ) ->setCategory( 'Exports Datas' ) ->setDescription( $title ) ->setKeywords( 'Exports Datas ' . date ( 'Y-m-d' )) ->setSubject( $title ) ->setTitle( $title ); /* create new sheet */ $objWorkSheet = $objPHPExcel ->getActiveSheet(); $objWorkSheet ->setTitle( 'Exports Datas' ); /* printer page setup */ /* print header and footer of a worksheet */ $objWorkSheet ->getHeaderFooter()->setOddFooter( '&L&B' . $objPHPExcel ->getProperties()->getTitle() . '&RPage &P of &N' ); $objWorkSheet ->getHeaderFooter()->setOddHeader( '&C&HPlease treat this document as confidential!' ); /* page margins */ $objWorkSheet ->getPageMargins()->setBottom(1); $objWorkSheet ->getPageMargins()->setLeft(0.75); $objWorkSheet ->getPageMargins()->setRight(0.75); $objWorkSheet ->getPageMargins()->setTop(1); /* Setting a worksheet's page orientation and size */ $objWorkSheet ->getPageSetup()->setFitToPage(true); $objWorkSheet ->getPageSetup()->setFitToWidth(true); $objWorkSheet ->getPageSetup()->setHorizontalCentered(true); $objWorkSheet ->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); $objWorkSheet ->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); /* Specify printing area */ $objWorkSheet ->getPageSetup()->setPrintArea( 'A1:E11' ); /* add demo data */ for ( $rowNo = 1; $rowNo < 10; $rowNo ++) { for ( $colNo = 0; $colNo < 5; $colNo ++) { $colString = PHPExcel_Cell::stringFromColumnIndex( $colNo ); $coordinate = $colString . $rowNo ; $objWorkSheet ->setCellValue( $coordinate , 'Add Data To ' . $coordinate ); } } /* auto width column */ $cellIterator = $objWorkSheet ->getRowIterator()->current()->getCellIterator(); $cellIterator ->setIterateOnlyExistingCells(true); foreach ( $cellIterator as $cell ) { $objWorkSheet ->getColumnDimension( $cell ->getColumn())->setAutoSize(true); } /* write */ $objWriter = PHPExcel_IOFactory::createWriter( $objPHPExcel , 'Excel2007' ); header( 'Content-Type: application/vnd.ms-excel' ); header( 'Content-Disposition: attachment;filename="' . $title . '.xlsx"' ); header( 'Cache-Control: max-age=0' ); header( 'Cache-Control: no-store, no-cache, must-revalidate, max-age=0' ); header( 'Cache-Control: post-check=0, pre-check=0' , false); header( 'Pragma: no-cache' ); $objWriter ->save( 'php://output' ); |
เปิดกับ LibreOffice Writer ก็ใช้ได้จริงๆ (สมัยนี้ใครเค้าใช้ microsoft word กันแล้ว ถ้าต้องจ่ายตัง) การกำหนดรูปแบบอื่นๆ อ่านได้จากตัวอย่าง PHPExcel recipes จัดได้หลากหลายมาก จะเลือกกระดาษ มาร์จิ้น สี เส้น เลขหน้า แนวนอน แนวตั้ง ทำได้หมด