วันนี้ตอนที่กำลังเขียน code โดยใช้ PHPExcel โดยพยามแต่งรูปแบบไฟล์ excel ให้มันสวยงามอยู่ เพื่อนโปรแกรมเมอร์อีกคน เตือนด้วยความหวังดีว่า จัดไปก็เท่านั้นเดี๋ยว user ก็พิมพ์ให้มันพัง ออกแบบให้พิมพ์แนวนอน แต่พี่แกก็ print ออกมาเป็นแบบแนวตั้ง
กลับมาบ้านลองหาคู่มือดู PHPExcel มันกำหนด page setup ให้เอกสารได้ด้วย ^_^ ก็เลยลองเขียนดู
<?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 https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/08-Recipes.md */ /* 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 จัดได้หลากหลายมาก จะเลือกกระดาษ มาร์จิ้น สี เส้น เลขหน้า แนวนอน แนวตั้ง ทำได้หมด
About the author