<?php //前部分爲phpexecel使用方法,後部分爲phpexecel實例 //1.引用PHPExcel include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/Writer/Excel5.php'; 用於輸出.xls的 $objPHPExcel = new PHPExcel(); //建立一個實例 //2.設置excel的屬性 //建立人 $objPHPExcel->getProperties()->setCreator("Maarten Balliauw"); //最後修改人 $objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw"); //標題 $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); //題目 $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); //描述 $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes."); //關鍵字 $objPHPExcel->getProperties()->setKeywords("office 2007 openxml php"); //種類 $objPHPExcel->getProperties()->setCategory("Test result file"); //也可用下面這種方式 $objPHPExcel->getProperties()->setCreator("ctos") ->setLastModifiedBy("ctos") ->setTitle("Office 2007 XLSX Test Document") ->setSubject("Office 2007 XLSX Test Document") ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") ->setKeywords("office 2007 openxml php") ->setCategory("Test result file"); //設置當前的sheet $objPHPExcel->setActiveSheetIndex(0); //設置sheet的標題 $objPHPExcel->getActiveSheet()->setTitle('Simple'); //設置單元格寬度 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20); //設置單元格高度 $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(40); //合併單元格 $objPHPExcel->getActiveSheet()->mergeCells('A18:E22'); //拆分單元格 $objPHPExcel->getActiveSheet()->unmergeCells('A28:B28'); //設置保護cell,保護工做表 $objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); $objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel'); //設置格式 $objPHPExcel->getActiveSheet()->getStyle('E4')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); $objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle('E4'), 'E5:E13' ); //設置加粗 $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); //設置水平對齊方式(HORIZONTAL_RIGHT,HORIZONTAL_LEFT,HORIZONTAL_CENTER,HORIZONTAL_JUSTIFY) $objPHPExcel->getActiveSheet()->getStyle('D11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); //設置垂直居中 $objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //設置字 $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10); //設置邊框 $objPHPExcel->getActiveSheet()->getStyle('A1:I20')->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN); //設置邊框顏色 $objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getLeft()->getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getTop()->getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getBottom()->getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getTop()->getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getBottom()->getColor()->setARGB('FF993300'); $objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getRight()->getColor()->setARGB('FF993300'); //插入圖像 $objDrawing = new PHPExcel_Worksheet_Drawing(); /*設置圖片路徑 切記:只能是本地圖片*/ $objDrawing->setPath('圖像地址'); /*設置圖片高度*/ $objDrawing->setHeight(180);//照片高度 $objDrawing->setWidth(150); //照片寬度 /*設置圖片要插入的單元格*/ $objDrawing->setCoordinates('E2'); /*設置圖片所在單元格的格式*/ $objDrawing->setOffsetX(5); $objDrawing->setRotation(5); $objDrawing->getShadow()->setVisible(true); $objDrawing->getShadow()->setDirection(50); $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); //設置單元格背景色 $objPHPExcel->getActiveSheet(0)->getStyle('A1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet(0)->getStyle('A1')->getFill()->getStartColor()->setARGB('FFCAE8EA'); //最後輸入瀏覽器,導出Excel $savename='導出Excel示例'; $ua = $_SERVER["HTTP_USER_AGENT"]; $datetime = date('Y-m-d', time()); if (preg_match("/MSIE/", $ua)) { $savename = urlencode($savename); //處理IE導出名稱亂碼 } // excel頭參數 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$savename.'.xls"'); //日期爲文件名後綴 header('Cache-Control: max-age=0'); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //excel5爲xls格式,excel2007爲xlsx格式 $objWriter->save('php://output'); /*------------------------------------------------------ */ //-- phpexcel數據導出例子 /*------------------------------------------------------ */ if ($_REQUEST['act'] == 'gen_excel') { @set_time_limit(0); /* 得到此線下紅包類型的ID */ $tid = !empty($_GET['tid']) ? intval($_GET['tid']) : 0; $type_name = $db->getOne("SELECT type_name FROM ".$ecs->table('bonus_type')." WHERE type_id = '$tid'"); /* 文件名稱 */ $bonus_filename = $type_name .'_bonus_list'; include_once(ROOT_PATH . 'phpExcel/Classes/PHPExcel.php'); require_once(ROOT_PATH . 'phpExcel/Classes/PHPExcel/Writer/Excel5.php'); $objPHPExcel = new PHPExcel(); //合併單元格: $objPHPExcel->getActiveSheet()->mergeCells('A1:E1'); $objPHPExcel->getActiveSheet()->SetCellValue('A1', $_LANG['bonus_excel_file']); //垂直居中 $objPHPExcel->getActiveSheet()->getStyle("A1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //輸入單元格 $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->SetCellValue('A2', $_LANG['bonus_sn']); $objPHPExcel->getActiveSheet()->SetCellValue('B2', $_LANG['type_money']); $objPHPExcel->getActiveSheet()->SetCellValue('C2', $_LANG['type_name']); $objPHPExcel->getActiveSheet()->SetCellValue('D2', $_LANG['use_enddate']); $objPHPExcel->getActiveSheet()->SetCellValue('E2', '是否使用'); $val = array(); $sql = "SELECT ub.bonus_id,ub.used_time,ub.bonus_type_id, ub.bonus_sn, bt.type_name, bt.type_money, bt.use_end_date ". "FROM ".$ecs->table('user_bonus')." AS ub, ".$ecs->table('bonus_type')." AS bt ". "WHERE bt.type_id = ub.bonus_type_id AND ub.bonus_type_id = '$tid' ORDER BY ub.bonus_id DESC"; $res = $db->query($sql); $code_table = array(); $i=3; while ($val = $db->fetchRow($res)) { $objPHPExcel->getActiveSheet()->SetCellValue('A'.$i, $val['bonus_sn']); $objPHPExcel->getActiveSheet()->SetCellValue('B'.$i, $val['type_money']); $objPHPExcel->getActiveSheet()->SetCellValue('C'.$i, $val['type_name']); $objPHPExcel->getActiveSheet()->SetCellValue('D'.$i, local_date('Y-m-d', $val['use_end_date'])); $objPHPExcel->getActiveSheet()->SetCellValue('E'.$i, $val['used_time']==0?'未使用':'已使用'); //對齊 $objPHPExcel->getActiveSheet()->getStyle('A'.$i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); $objPHPExcel->getActiveSheet()->getStyle('B'.$i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); $objPHPExcel->getActiveSheet()->getStyle('C'.$i)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('D'.$i)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //填充顏色 if($val['used_time']!=0){ $objPHPExcel->getActiveSheet()->getStyle('E'.$i)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle('E'.$i)->getFill()->getStartColor()->setARGB('#FF0000'); } $i++; } // 設置寬width $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(18); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(18); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(18); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(18); // Rename sheet $objPHPExcel->getActiveSheet()->setTitle($bonus_filename); $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); $objWriter->save(str_replace('.php', '.xls', __FILE__)); header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate,post-check=0,pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download"); header("Content-Disposition: attachment; filename=$bonus_filename.xls"); header("Content-Transfer-Encoding:binary"); $objWriter->save("php://output"); } //處理中文輸出問題 //須要將字符串轉化爲UTF-8編碼,才能正常輸出,不然中文字符將輸出爲空白,以下處理: $str =iconv('gb2312', 'utf-8', $str); //或者你能夠寫一個函數專門處理中文字符串: function convertUTF8($str) { if(empty($str)) return''; return iconv('gb2312', 'utf-8', $str); } //從數據庫輸出數據處理方式 //從數據庫讀取數據如: $db = new Mysql($dbconfig); $sql = "SELECT * FROM 表名"; $row = $db->GetAll($sql); // $row爲二維數組 $count = count($row); for ($i = 2; $i <= $count+1; $i++) { $objPHPExcel->getActiveSheet()->setCellValue('A'. $i, convertUTF8($row[$i-2][1])); $objPHPExcel->getActiveSheet()->setCellValue('B'. $i, convertUTF8($row[$i-2][2])); $objPHPExcel->getActiveSheet()->setCellValue('C'. $i, convertUTF8($row[$i-2][3])); $objPHPExcel->getActiveSheet()->setCellValue('D'. $i, convertUTF8($row[$i-2][4])); $objPHPExcel->getActiveSheet()->setCellValue('E'. $i, convertUTF8(date("Y-m-d", $row[$i-2][5]))); $objPHPExcel->getActiveSheet()->setCellValue('F'. $i, convertUTF8($row[$i-2][6])); $objPHPExcel->getActiveSheet()->setCellValue('G'. $i, convertUTF8($row[$i-2][7])); $objPHPExcel->getActiveSheet()->setCellValue('H'. $i, convertUTF8($row[$i-2][8])); } /*------------------------------------------------------ */ //-- 導入execel到數據庫中 /*------------------------------------------------------ */ if ($_REQUEST['act'] == 'send_by_import') { if(empty($_FILES['inputExcel']['name'])){alert('請選擇excel文件','add');} //驗證數據 include_once (dirname ( __FILE__ ) .'/phpExcel/Classes/PHPExcel.php'); //加載excel相關文件 include_once (dirname ( __FILE__ ) .'/phpExcel/Classes/PHPExcel/Writer/Excel2007.php'); $objPHPExcel = new PHPExcel(); //實例化PHPExcel類 $objPHPExcel = PHPExcel_IOFactory::load($_FILES["inputExcel"]["tmp_name"]); $indata = $objPHPExcel->getSheet(0)->toArray(); //內容轉換爲數組 insertExcelComment($indata,$comment_configs); //調用函數,導入數據 } //導入excel數據 處理函數 function insertExcelComment($data,$bonus_type_id){ global $db,$ecs; if ( empty( $data ) ) alert('導入失敗,請檢查excel是否有數據','send&id=14&send_by=3&import=1');//驗證數據 $new_arr = array(); foreach($data as $key=>$into){ if($into[1] != '' && $into[2] != ''){ $endInto['xuId'] = $into[0]; $endInto['bonus_type_id'] = intval($into[1]); $endInto['bonus_sn'] = intval($into[2]); $new_arr[]=$endInto; } } //去掉標題 if($new_arr[0]['bonus_sn'] == '優惠碼'){ unset($new_arr[0]); //統計excel內容總數量,成功導入數量,導入失敗數量 $allNum = count($new_arr); }else{ $allNum = count($new_arr); } //獲取數據庫優惠號 $sql = "select bonus_sn from ".$ecs->table('user_bonus'); $bonus_sn = $db->getAll($sql); $bonus_sn_arr = array(); foreach ($bonus_sn as $key => $val) { $bonus_sn_arr[] = $val['bonus_sn']; } //判斷優惠卷ID是否存在與格式是否正確 foreach($new_arr as $val){ if($val['bonus_type_id'] != $bonus_type_id || strlen($val['bonus_sn'])<8 || in_array($val['bonus_sn'],$bonus_sn_arr)){ if( intval($val['xuId']) != 0){ $arra[] = $val['xuId']; $isType = 1; } } } if($isType == 1){ $falseNums = count($arra);//統計失敗數量 $falsexuId = implode(' ',$arra); alert("共 $falseNums 條數據導入失敗,序號是 " . $falsexuId . ' 請修改後再上傳','send&id=14&send_by=3&import=1'); }else{ foreach($new_arr as $val){ unset($val['xuId']); //統計符合要求可導入數據庫的數量 $trueNum[] = $val; $sql = "INSERT INTO ".$ecs->table('user_bonus')." (".implode(",", array_keys($val)).") VALUES ('".implode("','",$val)."')"; $db->query($sql); } $trueNum = count($trueNum); alert("共 $allNum 條數據,成功導入 $trueNum 條",'list'); } } function alert($str, $act) { echo "<script>alert('$str');location.href='bonus.php?act=$act';" . "</script>"; }