Các bạn nào lập trình PHP chắc hẳn đều biết tới PHPExcel – là thư viện hỗ trợ đọc, xuất file excel… Bài này sẽ giới thiệu các bạn cách xuất ra file excel với nhiều sheet.
Đầu tiên, chắc chắn là phải khai báo thư viện rồi.
1 2 3 |
require("lib/Classes/PHPExcel/IOFactory.php"); require("lib/Classes/PHPExcel.php"); $objPHPExcel = new PHPExcel(); |
Tiếp đến
1 |
$index_worksheet = 0; //(worksheet mặc định là 0, nếu tạo nhiều worksheet $index_worksheet += 1) |
Và giờ là:
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 |
(Vòng lặp){ if($index_worksheet>0){ $objPHPExcel->createSheet(); //Tạo sheet mới } $objPHPExcel->setActiveSheetIndex($index_worksheet); //Chọn sheet làm việc //Code chương tình của bạn /* VD: $objPHPExcel->setActiveSheetIndex($index_worksheet) ->setCellValue('A1', 'STT') ->setCellValue('A2', 'TÊN') ->setCellValue('A3', 'SĐT'); */ $index_worksheet++; } $objPHPExcel->getProperties()->setCreator("Tên người tạo") ->setTitle("Tiêu đề") ->setSubject("Chủ đề") ->setDescription("Mô tả") ->setKeywords("Từ khóa") ->setCategory("Danh mục"); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); header("Content-Disposition: attachment; filename= TÊN FILE.xlsx"); header("Cache-Control: max-age=0"); ob_clean(); $objWriter->save("php://output"); //Lưu về máy tính $objWriter->save('Đường dẫn/TÊN FILE.xlsx'); //Lưu trên server |
Đơn giản chỉ có vậy thôi 🙂
Bổ sung thêm cho các bạn những thuộc tính hay dùng trong file excel.
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
$objPHPExcel->getActiveSheet()->mergeCells('C4:C5'); //Gộp 2 cột hoặc 2 hàng lại với nhau $highestRow = $objWorksheet->getHighestRow(); // e.g. 10 Hàng cuối cùng $highestColumn = $objWorksheet->getHighestColumn(); // e.g 'F' Cột cuối cùng $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); // e.g. 5 Cột cuối cùng $objPHPExcel->getActiveSheet()->getStyle('A1:A4')->getFont()->setBold(true); //Tô đậm chữ $objPHPExcel->getActiveSheet()->getStyle('A1:A4')->getFont()->setItalic(true); //In nghiêng chữ $objPHPExcel->getActiveSheet()->getStyle('A1:A4')->getFont()->setName('Times New Roman'); //Font chữ $objPHPExcel->getActiveSheet()->getStyle('A1:A4')->getFont()->setSize(12); //Cỡ chữ $objPHPExcel->getActiveSheet()->getStyle('A1:C5')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //Canh chữ ở giữa $objPHPExcel->getActiveSheet()->getStyle('A1:C5')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //Canh chữ ở giữa $objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(14); //Mặc định độ rộng cột $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(14); //Mặc định độ cao hàng $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(5); //Độ rộng cột $objPHPExcel->getActiveSheet()->getRowDimension(2)->setRowHeight(5); //Độ cao hàng $objPHPExcel->getActiveSheet()->freezePane('A6'); //Cố định hàng $objPHPExcel->getActiveSheet()->setTitle('TEN'); //Tên sheet $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToWidth(1); //Căn vừa chiều rộng $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToHeight(0); //Căn vừa chiều cao $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0.2); //Margin bên phải $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.4); //Margin bên trái $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.4); //Margin bên trên $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0); //Margin bên dưới $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0); //Margin Footer $objPHPExcel->getActiveSheet()->getStyle('E20:F20')->getNumberFormat()->setFormatCode("#,##0_);[Black](#,##0)"); //Kiểu tiền tệ //Thêm hình ảnh $objDrawing = new PHPExcel_Worksheet_HeaderFooterDrawing(); $objDrawing->setName('Image'); $objDrawing->setPath('Đường dẫn hình'); $objDrawing->setHeight(50); $objDrawing->setWidth(130); $objDrawing->setCoordinates('G3'); //Chèn hình $objPHPExcel->getActiveSheet()->getHeaderFooter()->addImage($objDrawing, PHPExcel_Worksheet_HeaderFooter::IMAGE_FOOTER_LEFT); // Chèn hình vào heaher footer trái/giữa/phải $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&G&'); // Chèn hình vào heaher footer trái/giữa/phải $objPHPExcel->getActiveSheet()->getStyle('A4:C5')->applyFromArray( array( 'borders' => array( 'allborders' => array( 'style' => PHPExcel_Style_Border::BORDER_THIN ) ) ) ); //Kẻ border toàn khung kiểu mảnh $objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray( array( 'font' => array( 'underline' => PHPExcel_Style_Font::UNDERLINE_SINGLE, ) ) ); //Gạch chân $objPHPExcel->getActiveSheet()->getStyle('A19:G19')->applyFromArray( array( 'fill' => array( 'type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => 'c6f2c8') ), ) ); //Đổ màu cho ô //Đọc file excel if (pathinfo($_FILES['import']['name'], PATHINFO_EXTENSION) == "xls") { $objReader = PHPExcel_IOFactory::createReader('Excel5'); } else if (pathinfo($_FILES['import']['name'], PATHINFO_EXTENSION) == "xlsx") { $objReader = PHPExcel_IOFactory::createReader('Excel2007'); } $objReader->setReadDataOnly(false); $objPHPExcel = $objReader->load($_FILES['import']['tmp_name']); //File hoặc đường dẫn $objWorksheet = $objPHPExcel->getActiveSheet(); for ($row = 2; $row <= $highestRow; ++ $row) { $val = array(); for ($col = 0; $col < $highestColumnIndex; ++ $col) { $cell = $objWorksheet->getCellByColumnAndRow($col, $row); // Check if cell is merged foreach ($objWorksheet->getMergeCells() as $cells) { if ($cell->isInRange($cells)) { $currMergedCellsArray = PHPExcel_Cell::splitRange($cells); $cell = $objWorksheet->getCell($currMergedCellsArray[0][0]); break; } } //$val[] = $cell->getValue(); $val[] = is_numeric($cell->getCalculatedValue()) ? round($cell->getCalculatedValue()) : $cell->getCalculatedValue(); //here's my prob.. //echo $val; } } |
Leave a Reply