• 技术文章 >后端开发 >php教程

    PHPEXCEL 使用小记_php技巧

    2016-05-17 09:07:26原创489
    首先是使用PHP Reader 读取Excle内容:
    复制代码 代码如下:

    require("http://www.jb51.net/PHPExcel/Classes/PHPExcel.php");
    $file = "D:\\datas.xlsx";
    if(!file_exists($file)){
    die("no file found in {$file}");
    }
    $datasReader = PHPExcel_IOFactory::load($file);
    $sheets = $datasReader->getAllSheets();
    //如果有多个工作簿
    $countSheets = count($sheets);
    $sheetsinfo = array();
    $sheetData = array();
    if($countSheets==1){
    $sheet = $sheets[0];
    $sheetsinfo["rows"] = $sheet->getHighestRow();
    $sheetsinfo["column"] = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());
    for($row=1;$row<=$sheetsinfo["rows"];$row++){
    for($column=0;$column<$sheetsinfo["column"];$column++){
    $sheetData[$column][$row] = $sheet->getCellByColumnAndRow($column, $row)->getValue();
    }
    }
    }else{
    foreach ($sheets as $key => $sheet)
    {
    $sheetsinfo[$key]["rows"] = $sheet->getHighestRow();
    $sheetsinfo[$key]["column"] = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());
    for($row=1;$row<=$sheetsinfo[$key]["rows"];$row++){
    for($column=0;$column<$sheetsinfo[$key]["column"];$column++){
    $sheetData[$key][$column][$row] = $sheet->getCellByColumnAndRow($column, $row)->getValue();
    }
    }
    }
    }
    echo "
    "; 
    print_r($sheetData);
    echo "
    ";

    注:使用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就可以了。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHPEXCEL
    上一篇:PHP编程函数安全篇_php技巧 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 设计API接口时,要注意这些地方!• PHP网站常见一些安全漏洞及防御方法• ThinkPHP控制器里javascript代码不能执行的解决方法_PHP• php实现refresh刷新页面批量导入数据的方法_PHP• PHP重定向的3种方式_PHP
    1/1

    PHP中文网