PHPEXCEL 小记

  • 首先是使用PHP Reader 读取Excle内容:
 1 require("http://www.cnblogs.com/PHPExcel/Classes/PHPExcel.php");
 2 $file = "D:\\datas.xlsx";
 3 if(!file_exists($file)){
 4     die("no file found in {$file}");
 5 }
 6 $datasReader = PHPExcel_IOFactory::load($file);
 7 $sheets = $datasReader->getAllSheets();
 8 //如果有多个工作簿
 9 $countSheets = count($sheets);
10 $sheetsinfo = array();
11 $sheetData = array();
12 if($countSheets==1){
13     $sheet = $sheets[0];    
14     $sheetsinfo["rows"] = $sheet->getHighestRow();
15     $sheetsinfo["column"] = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());
16     for($row=1;$row<=$sheetsinfo["rows"];$row++){
17         for($column=0;$column<$sheetsinfo["column"];$column++){
18             $sheetData[$column][$row] = $sheet->getCellByColumnAndRow($column, $row)->getValue();
19         }
20     }
21 }else{    
22     foreach ($sheets as $key => $sheet) 
23     {
24         $sheetsinfo[$key]["rows"] = $sheet->getHighestRow();
25         $sheetsinfo[$key]["column"] = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());        
26         for($row=1;$row<=$sheetsinfo[$key]["rows"];$row++){
27             for($column=0;$column<$sheetsinfo[$key]["column"];$column++){
28                 $sheetData[$key][$column][$row] = $sheet->getCellByColumnAndRow($column, $row)->getValue();
29             }
30         }
31     }
32 }
33 echo "<pre>";
34 print_r($sheetData);
35 echo "</pre>";

注:使用PHP 读取excel文件内容,一般都是处理整理好格式的csv或者excel,也可以读取xml文件

  • PHPExcel生成Exceel
$sql = sprintf("select * from table where op_id=%d",  intval($this->params['id']));
        $query = $this->_db->query($sql);
        require_once './PHPExcel_1.7.4/Classes/PHPExcel.php';
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->setActiveSheetIndex(0);
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
        $objPHPExcel->getActiveSheet()->setCellValue('A1', "{$this->_packInfos['o_id']}");
        $objPHPExcel->getActiveSheet()->setCellValue('B1', "Volume weight (kg)");
        $objPHPExcel->getActiveSheet()->setCellValue('D1', "Actual weight (kg)");

        
        $objPHPExcel->getActiveSheet()->setCellValue('A2', "Box No.");
        $objPHPExcel->getActiveSheet()->setCellValue('B2', "Products");
        $objPHPExcel->getActiveSheet()->setCellValue('C2', "Shipping Box");
        $objPHPExcel->getActiveSheet()->setCellValue('D2', "System");
        $objPHPExcel->getActiveSheet()->setCellValue('E2', "Input");
        $objActSheet = $objPHPExcel->getActiveSheet();
        $objActSheet->mergeCells("B1:C1");
        $objActSheet->mergeCells("D1:E1");
        
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
        $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        
        $objPHPExcel->getActiveSheet()->getStyle('A2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
        $objPHPExcel->getActiveSheet()->getStyle('B2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('C2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('D2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('E2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        
        if($this->_db->num_rows($query)>0)
        {
            $i=3;
            while ($row = $this->_db->fetch_assoc($query))
            {
                $objPHPExcel->getActiveSheet()->setCellValue('A'.($i),"BOX ".$row['box_num']);
                $objPHPExcel->getActiveSheet()->setCellValue('B'.($i),sprintf("%.2f",$row['volume_weight']));
                $objPHPExcel->getActiveSheet()->setCellValue('C'.($i),sprintf("%.2f",$row['box_weight']));
                $objPHPExcel->getActiveSheet()->setCellValue('D'.($i),sprintf("%.2f",$row['system_weight']));
                $objPHPExcel->getActiveSheet()->setCellValue('E'.($i),sprintf("%.2f",$row['real_weight']));
                
                $objPHPExcel->getActiveSheet()->getStyle('A'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
                $objPHPExcel->getActiveSheet()->getStyle('B'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
                $objPHPExcel->getActiveSheet()->getStyle('C'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
                $objPHPExcel->getActiveSheet()->getStyle('D'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
                $objPHPExcel->getActiveSheet()->getStyle('E'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
                $i++;
            }
        }
        
        $fileName="exportBox.xls";
        $filePath = dirname(dirname("__FILE__"))."/template/".$fileName;
        $path = "./template/".$fileName;
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);        
        if(file_exists($path)){
            chmod($path, 0777);
            unlink($path);
            $objWriter->save($path); 
            header('application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename=weight-'.$this->_packInfos["o_id"].".xlsx");
            readfile($filePath);      
            die();
        }
        else 
        {
            $objWriter->save($path); 
            header('application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename=weight-'.$this->_packInfos["o_id"].".xlsx");
            readfile($filePath);      
           die();
        }

注:上面的php生成excel的方式是直接使用A标签形式的,如果使用ajax,可以不使用header,直接echo $path,前台window.location.href=返回来的path就可以了。

原文地址:https://www.cnblogs.com/akulubala/p/2846170.html