码迷,mamicode.com
首页 > Web开发 > 详细

PHPExcel导入导出

时间:2016-02-08 01:07:02      阅读:564      评论:0      收藏:0      [点我收藏+]

标签:

慕课教程 -- PHPExcel导入导出

一、PHPExcel导出操作

1.快速入门

 

<?php
#找到当前脚本的路径
$dir = dirname(__FILE__);
#引入PHPExcel插件文件
require $dir."/excel/PHPExcel.php";
#实例化PHPExcel类
$objPHPExcel = new PHPExcel();
#获得当前活动sheet的操作对象
$objSheet = $objPHPExcel->getActiveSheet();
#给当前的活动sheet设置名称
$objSheet->setTitle(‘demo‘);
#给当前活动sheet填充数据
$objSheet->setCellValue(‘A1‘,‘姓名‘)->setCellValue(‘B1‘,‘分数‘);
$objSheet->setCellValue(‘A2‘,‘张三‘)->setCellValue(‘B2‘,‘100‘);
#按照指定格式生成Excel文件
$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel2007‘);
#将生成的Excel文件保存到指定的路径
$objWrite->save($dir.‘/demo01_1.xlsx‘);
echo ‘ok!‘;
?>

 

生成结果:

技术分享

除了以上的方式填充数据,还可以使用数组的形式:

<?php
#找到当前脚本的路径
$dir = dirname(__FILE__);
#引入PHPExcel插件文件
require $dir."/excel/PHPExcel.php";
#实例化PHPExcel类
$objPHPExcel = new PHPExcel();
#获得当前活动sheet的操作对象
$objSheet = $objPHPExcel->getActiveSheet();
#给当前的活动sheet设置名称
$objSheet->setTitle(‘demo‘);
#给当前活动sheet填充数据:不推荐此方法,消耗内存大
$data = array(
    array(),
    array(‘‘,‘姓名‘,‘分数‘),
    array(‘‘,‘Curry‘,‘100‘),
    array(‘‘,‘James‘,‘59‘),
);
$objSheet->fromArray($data);
#按照指定格式生成Excel文件
$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel2007‘);
#将生成的Excel文件保存到指定的路径
$objWrite->save($dir.‘/demo01_2.xlsx‘);
echo ‘ok!‘;
?>

生成结果:

技术分享

 

 

2.PHPExcel导出MySQL数据库数据

student.sql

--
-- 数据库: `phpexcel`
--

-- --------------------------------------------------------

--
-- 表的结构 `student`
--

CREATE TABLE IF NOT EXISTS `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `score` float NOT NULL,
  `grade` int(10) unsigned DEFAULT NULL comment 年级,
  `class` int(10) unsigned DEFAULT NULL comment 班级,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=31 ;

--
-- 转存表中的数据 `student`
--

INSERT INTO `student` (`id`, `name`, `score`, `grade`, `class`) VALUES
(1, 马化腾, 40, 1, 1),
(2, 詹姆斯, 68, 2, 1),
(3, 王博, 98, 3, 1),
(4, 李梅, 65, 1, 1),
(5, 雷军, 97, 2, 1),
(6, 黎明, 80, 3, 1),
(7, 景甜, 84, 1, 1),
(8, 哈桑, 65, 2, 1),
(9, 阿米尔, 98, 3, 1),
(10, 奥巴马, 100, 1, 2),
(11, 范冰冰, 87, 2, 2),
(12, 李冰冰, 89, 3, 2),
(13, 迪丽热巴, 90, 1, 2),
(14, 梁金秀, 91, 2, 2),
(15, 赵默笙, 92, 3, 2),
(16, 汤唯, 96, 1, 2),
(17, 小明, 70, 2, 2),
(18, 大锤, 71, 3, 2),
(19, 逗比, 72, 1, 2),
(20, 王无, 73, 2, 3),
(21, 建平, 74, 3, 3),
(22, 郭富城, 80, 1, 3),
(23, 张学友, 95, 2, 3),
(24, 金莎, 86, 3, 3),
(25, 李克强, 56, 1, 3),
(26, 天山, 89, 2, 3),
(27, 周唯一, 87, 3, 3),
(28, 周国平, 85, 1, 3),
(29, 陈建军, 62, 2, 3),
(30, 暴走哥, 90, 3, 3);

dbconfig.php

<?php
/*
    MYSQL config-file
 */
$config = array(
    ‘host‘ => ‘127.0.0.1‘,
    ‘username‘ => ‘root‘,
    ‘password‘ => ‘‘,
    ‘database‘ => ‘phpexcel‘,
    ‘charset‘ => ‘utf8‘,
);
?>

db.php

<?php
// 引入配置文件
require dirname(__FILE__).‘/dbconfig.php‘;
class db{
    public $conn = null;
    // 构造方法:实例化的时候自动调用
    public function __construct($config)
    {    
        #连接数据库
        $this->conn = mysql_connect($config[‘host‘],$config[‘username‘],$config[‘password‘]) or die(mysql_error());
        #选择数据库
        mysql_select_db($config[‘database‘],$this->conn) or die(mysql_error());
        #设置字符编码
        mysql_query("set names " . $config[‘charset‘]) or die(mysql_error());
    }

    // 根据传入的SQL语句 查询Mysql结果集
    public function getResult($sql)
    {
        #查询sql语句
        $resource = mysql_query($sql,$this->conn) or die(mysql_error());
        $res = array();
        while(($row = mysql_fetch_assoc($resource))!= false) 
        {
            $res[] = $row;
        }
        return $res;
    }

    // 根据传入的年级数,查询每个年级的学生数据
    public function getDataByGrade($grade)
    {
        #组织SQL语句
        $sql = "select name,score,grade from student where grade=" .$grade. " order by score desc";
        $res = self::getResult($sql);
        return $res;
    }


}

?>

案例1:exprot_1.php -- 将结果生成excel文件

<?php
#查找当前脚本所在的路径
$dir = dirname(__FILE__);
#引入db类文件
require $dir.‘/excel/db.php‘;
#引入PHPExcel插件文件
require $dir.‘/excel/PHPExcel.php‘;
$db = new db($config);
$objPHPExcel = new PHPExcel();
for($i = 1;$i <= 3;$i++)
{
    #注意:默认第一个sheet不用创建:createSheet()
    if($i > 1)
    {    
        #创建新的内置表
        $objPHPExcel->createSheet();
    }
    #把新创建的sheet设置为当前活动sheet
    $objPHPExcel->setActiveSheetIndex($i - 1);
    #获取当前活动的sheet
    $objSheet = $objPHPExcel->getActiveSheet();
    #给当前活动的sheet起个名字
    $objSheet->setTitle($i.‘年级‘);
    #查询每个年级的学生数据
    $data = $db->getDataByGrade($i);
    #填充数据
    $objSheet->setCellValue(‘A1‘,‘姓名‘)->setCellValue(‘B1‘,‘分数‘)->setCellValue(‘C1‘,‘年级‘);
    $j = 2;
    #遍历学生数据
    foreach ($data as $key => $v) {
        $objSheet->setCellValue(‘A‘.$j,$v[‘name‘])->setCellValue(‘B‘.$j,$v[‘score‘])->setCellValue(‘C‘.$j,$v[‘grade‘]);
        $j++;
    }
}
#生成excel文件
$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel5‘);
#保存文件
$objWrite->save($dir.‘/export_1.xls‘);
echo ‘ok!‘;

?>

生成结果:

技术分享  技术分享  技术分享

案例1:exprot_2.php -- 将结果输出浏览器

<?php
#查找当前脚本所在的路径
$dir = dirname(__FILE__);
#引入db类文件
require $dir.‘/excel/db.php‘;
#引入PHPExcel插件文件
require $dir.‘/excel/PHPExcel.php‘;
$db = new db($config);
$objPHPExcel = new PHPExcel();
for($i = 1;$i <= 3;$i++)
{
    if($i > 1)
    {    
        #创建新的内置表
        $objPHPExcel->createSheet();
    }
    #把新创建的sheet设置为当前活动sheet
    $objPHPExcel->setActiveSheetIndex($i - 1);
    #获取当前活动的sheet
    $objSheet = $objPHPExcel->getActiveSheet();
    #给当前活动的sheet起个名字
    $objSheet->setTitle($i.‘年级‘);
    #查询每个年级的学生数据
    $data = $db->getDataByGrade($i);
    #填充数据
    $objSheet->setCellValue(‘A1‘,‘姓名‘)->setCellValue(‘B1‘,‘分数‘)->setCellValue(‘C1‘,‘年级‘);
    $j = 2;
    #遍历学生数据
    foreach ($data as $key => $v) {
        $objSheet->setCellValue(‘A‘.$j,$v[‘name‘])->setCellValue(‘B‘.$j,$v[‘score‘])->setCellValue(‘C‘.$j,$v[‘grade‘]);
        $j++;
    }
}
#生成excel文件
// $objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel5‘);
$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel2007‘);
#调用方法,判断EXCEL文件类型
browser_export(‘Excel2007‘,‘export_browser.xlsx‘);
// browser_export(‘Excel5‘,‘export_browser.xls‘);
#浏览器输出
$objWrite->save("php://output");

function browser_export($type,$filename)
{    
    #Excel5 - 03   Excel2007 - 07
    if($type == ‘Excel5‘)  
    {    
        #excel-2003
        header(‘Content-Type: application/vnd.ms-excel‘);
    }
    else
    {
        #excel-2007
        header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);
    }
    #注意输出的文件文件:不设置输出浏览器文件名字,则使用当前脚本的名字
    header(‘Content-Disposition: attachment;filename=‘.$filename);
    header(‘Cache-Control: max-age=0‘);
}
?>

生成结果

 

3.Excel样式控制(一)

<?php
#查找当前脚本所在的路径
$dir = dirname(__FILE__);
#引入db类文件
require $dir.‘/excel/db.php‘;
#引入PHPExcel插件文件
require $dir.‘/excel/PHPExcel.php‘;
$db = new db($config);
$objPHPExcel = new PHPExcel();
#获得当前活动单元格
$objSheet = $objPHPExcel->getActiveSheet();
/*
    样式控制部分
 */
#设置excel文件默认水平垂直方向居中
$objSheet->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
#设置默认字体大小和格式
$objSheet->getDefaultStyle()->getFont()->setSize(14)->setName("微软雅黑");
#设置第二行字体大小和加粗
$objSheet->getStyle("A2:Z2")->getFont()->setSize(20)->setBold(TRUE);
#设置第三行字体大小和加粗
$objSheet->getStyle("A3:Z3")->getFont()->setSize(14)->setBold(TRUE);
$gradeinfo = $db->getAllGrade();
#获取所有的年级数据
$gradeInfo = $db->getAllGrade();
#列数标志
$index = 0;
#遍历年级信息获取每个年级的班级数据
foreach ($gradeInfo as $g_k => $g_v)
{    
    #获取年级信息所在的列
    $beginGradeIndex = getCells($index * 2);
    #设置年级列标题
    $objSheet->setCellValue($beginGradeIndex.‘2‘,‘高‘.$g_v[‘grade‘]);
    $classInfo = $db->getClassByGrade($g_v[‘grade‘]);
    #根据年级班级获取每个学生的数据
    foreach ($classInfo as $c_k => $c_v)
    {    
        #设置姓名列的标志
        $nameIndex = getCells($index*2);
        #设置分数列的标志
        $gradeIndex = getCells($index*2+1);
        $info = $db->getDataByClassGrade($g_v[‘grade‘],$c_v[‘class‘]);
        #设置班级列标题
        $objSheet->setCellValue($nameIndex.‘3‘,$c_v[‘class‘].‘班‘);
        #合并班级
        $objSheet->mergeCells($nameIndex.‘3:‘.$gradeIndex.‘3‘);
        #填充班级背景颜色
        $objSheet->getStyle($nameIndex.‘3:‘.$gradeIndex.‘3‘)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB(‘6fc144‘);
        #获取年级边框样式代码
        $classBorder=getBorderStyle("00FF00");
        #设置每个年级的边框
        $objSheet->getStyle($nameIndex.‘3:‘.$gradeIndex.‘3‘)->applyFromArray($classBorder);
        #设置文字自动换行
        $objSheet->getStyle($nameIndex)->getAlignment()->setWrapText(true);
        #设置姓名列标题
        $objSheet->setCellValue($nameIndex.‘4‘,"姓名\n自动换行")->setCellValue($gradeIndex.‘4‘,‘分数‘);
        #设置某列单元格格式为文本格式
         $objSheet->getStyle($gradeIndex)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
        #行数标志
        $j = 5;
        #遍历学生信息
        foreach ($info as $k => $v) {
            //填充学生信息
            #对单元格的数据类型进行设置:设置为字符类型
            $objSheet->setCellValue($nameIndex.$j,$v[‘name‘])->setCellValueExplicit($gradeIndex.$j,$v[‘score‘]."12321321321321312",PHPExcel_Cell_DataType::TYPE_STRING);
            // $objSheet ->setCellValue($nameIndex.$j,$v[‘name‘])->setCellValue($gradeIndex.$j,$v[‘score‘]);
            #行数自增 +1
            $j++;
        }
        $index++;
    }
    #获得每个年级终止的单元格
    $endGradeIndex = getCells($index * 2 -1);
    #合并年级的单元格
    $objSheet->mergeCells($beginGradeIndex.‘2:‘.$endGradeIndex.‘2‘);
    #填充年级背景颜色
    $objSheet->getStyle($beginGradeIndex.‘2:‘.$endGradeIndex.‘2‘)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB(‘c1b644‘);
    #获取年级边框样式代码
    $gradeBorder=getBorderStyle("c144b1");
    #设置每个年级的边框
    $objSheet->getStyle($beginGradeIndex.‘2:‘.$endGradeIndex.‘2‘)->applyFromArray($gradeBorder);

    
}

#生成excel文件
// $objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel5‘);
$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel5‘);
#调用方法,判断EXCEL文件类型
browser_export(‘Excel5‘,‘export_browser.xls‘);
// browser_export(‘Excel5‘,‘export_browser.xls‘);
#浏览器输出
$objWrite->save("php://output");

function browser_export($type,$filename)
{    
    #Excel5 - 03   Excel2007 - 07
    if($type == ‘Excel5‘)  
    {    
        #excel-2003
        header(‘Content-Type: application/vnd.ms-excel‘);
    }
    else
    {
        #excel-2007
        header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);
    }
    #注意输出的文件文件:不设置输出浏览器文件名字,则使用当前脚本的名字
    header(‘Content-Disposition: attachment;filename=‘.$filename);
    header(‘Cache-Control: max-age=0‘);
}

function getCells($index)
{
    $arr = range(‘A‘, ‘Z‘);
    return $arr[$index];
}

/**
**获取边框样式代码
**/
    function getBorderStyle($color){
            $styleArray = array(
                ‘borders‘ => array(
                    ‘outline‘ => array(
                        ‘style‘ => PHPExcel_Style_Border::BORDER_THICK,
                        ‘color‘ => array(‘rgb‘ => $color),
                    ),
                ),
            );
            return $styleArray;
    }
?>

生成结果:

技术分享

 

4.Excel样式控制(二)

<?php
#查找当前脚本所在的路径
$dir = dirname(__FILE__);
#引入db类文件
require $dir.‘/excel/db.php‘;
#引入PHPExcel插件文件
require $dir.‘/excel/PHPExcel.php‘;
$db = new db($config);
$objPHPExcel = new PHPExcel();
#获得当前活动单元格
$objSheet = $objPHPExcel->getActiveSheet();
/*
    样式控制部分
 */
#设置excel文件默认水平垂直方向居中
$objSheet->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
#设置默认字体大小和格式
$objSheet->getDefaultStyle()->getFont()->setSize(14)->setName("微软雅黑");
#设置第二行字体大小和加粗
$objSheet->getStyle("A2:Z2")->getFont()->setSize(20)->setBold(TRUE);
#设置第三行字体大小和加粗
$objSheet->getStyle("A3:Z3")->getFont()->setSize(14)->setBold(TRUE);
$gradeinfo = $db->getAllGrade();
#获取所有的年级数据
$gradeInfo = $db->getAllGrade();
#列数标志
$index = 0;
#遍历年级信息获取每个年级的班级数据
foreach ($gradeInfo as $g_k => $g_v)
{    
    #获取年级信息所在的列
    $beginGradeIndex = getCells($index * 2);
    #设置年级列标题
    $objSheet->setCellValue($beginGradeIndex.‘2‘,‘高‘.$g_v[‘grade‘]);
    $classInfo = $db->getClassByGrade($g_v[‘grade‘]);
    #根据年级班级获取每个学生的数据
    foreach ($classInfo as $c_k => $c_v)
    {    
        #设置姓名列的标志
        $nameIndex = getCells($index*2);
        #设置分数列的标志
        $gradeIndex = getCells($index*2+1);
        $info = $db->getDataByClassGrade($g_v[‘grade‘],$c_v[‘class‘]);
        #设置班级列标题
        $objSheet->setCellValue($nameIndex.‘3‘,$c_v[‘class‘].‘班‘);
        #合并班级
        $objSheet->mergeCells($nameIndex.‘3:‘.$gradeIndex.‘3‘);
        #填充班级背景颜色
        $objSheet->getStyle($nameIndex.‘3:‘.$gradeIndex.‘3‘)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB(‘6fc144‘);
        #获取年级边框样式代码
        $classBorder=getBorderStyle("00FF00");
        #设置每个年级的边框
        $objSheet->getStyle($nameIndex.‘3:‘.$gradeIndex.‘3‘)->applyFromArray($classBorder);
        #设置文字自动换行
        $objSheet->getStyle($nameIndex)->getAlignment()->setWrapText(true);
        #设置姓名列标题
        $objSheet->setCellValue($nameIndex.‘4‘,"姓名\n自动换行")->setCellValue($gradeIndex.‘4‘,‘分数‘);
        #设置某列单元格格式为文本格式
         $objSheet->getStyle($gradeIndex)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
        #行数标志
        $j = 5;
        #遍历学生信息
        foreach ($info as $k => $v) {
            //填充学生信息
            #对单元格的数据类型进行设置:设置为字符类型
            $objSheet->setCellValue($nameIndex.$j,$v[‘name‘])->setCellValueExplicit($gradeIndex.$j,$v[‘score‘]."12321321321321312",PHPExcel_Cell_DataType::TYPE_STRING);
            // $objSheet ->setCellValue($nameIndex.$j,$v[‘name‘])->setCellValue($gradeIndex.$j,$v[‘score‘]);
            #行数自增 +1
            $j++;
        }
        $index++;
    }
    #获得每个年级终止的单元格
    $endGradeIndex = getCells($index * 2 -1);
    #合并年级的单元格
    $objSheet->mergeCells($beginGradeIndex.‘2:‘.$endGradeIndex.‘2‘);
    #填充年级背景颜色
    $objSheet->getStyle($beginGradeIndex.‘2:‘.$endGradeIndex.‘2‘)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB(‘c1b644‘);
    #获取年级边框样式代码
    $gradeBorder=getBorderStyle("c144b1");
    #设置每个年级的边框
    $objSheet->getStyle($beginGradeIndex.‘2:‘.$endGradeIndex.‘2‘)->applyFromArray($gradeBorder);

    
}

#生成excel文件
// $objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel5‘);
$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel5‘);
#调用方法,判断EXCEL文件类型
browser_export(‘Excel5‘,‘export_browser.xls‘);
// browser_export(‘Excel5‘,‘export_browser.xls‘);
#浏览器输出
$objWrite->save("php://output");

function browser_export($type,$filename)
{    
    #Excel5 - 03   Excel2007 - 07
    if($type == ‘Excel5‘)  
    {    
        #excel-2003
        header(‘Content-Type: application/vnd.ms-excel‘);
    }
    else
    {
        #excel-2007
        header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);
    }
    #注意输出的文件文件:不设置输出浏览器文件名字,则使用当前脚本的名字
    header(‘Content-Disposition: attachment;filename=‘.$filename);
    header(‘Cache-Control: max-age=0‘);
}

function getCells($index)
{
    $arr = range(‘A‘, ‘Z‘);
    return $arr[$index];
}

/**
**获取边框样式代码
**/
    function getBorderStyle($color){
            $styleArray = array(
                ‘borders‘ => array(
                    ‘outline‘ => array(
                        ‘style‘ => PHPExcel_Style_Border::BORDER_THICK,
                        ‘color‘ => array(‘rgb‘ => $color),
                    ),
                ),
            );
            return $styleArray;
    }
?>

生成结果:

技术分享

 

 5.PHP操作Excel生成图形报表

<?php
#查找当前脚本所在的路径
$dir = dirname(__FILE__);
#引入db类文件
require $dir.‘/excel/db.php‘;
#引入PHPExcel插件文件
require $dir.‘/excel/PHPExcel.php‘;
$db = new db($config);
$objPHPExcel = new PHPExcel();
#获得当前活动单元格
$objSheet = $objPHPExcel->getActiveSheet();
/*
    PHP操作Excel生成图形报表
 */
#数据信息
$data = array(
    array(‘‘,‘一班‘,‘二班‘,‘三班‘),
    array(‘不及格‘,20,30,40),
    array(‘良好‘,21,35,25),
    array(‘优秀‘,14,16,19),
);
#加载数据
$objSheet->fromArray($data);
#图表代码编写
#先取得绘制图表的标签
$labels= array(
    new PHPExcel_Chart_DataSeriesValues(‘String‘,‘Worksheet!$B$1‘,null,1),//一班
    new PHPExcel_Chart_DataSeriesValues(‘String‘,‘Worksheet!$C$1‘,null,1),//二班
    new PHPExcel_Chart_DataSeriesValues(‘String‘,‘Worksheet!$D$1‘,null,1),//三班
);
#X轴:取得图表的X轴刻度
$xlabels = array(
    new PHPExcel_Chart_DataSeriesValues(‘String‘,‘Worksheet!$A$2:$A$4‘,null,3),
);
#取得绘图所需要的数据
$datas = array(
    new PHPExcel_Chart_DataSeriesValues(‘Number‘,‘Worksheet!$B$2:$B$4‘,null,3),//一班
    new PHPExcel_Chart_DataSeriesValues(‘Number‘,‘Worksheet!$C$2:$C$4‘,null,3),//二班
    new PHPExcel_Chart_DataSeriesValues(‘Number‘,‘Worksheet!$D$2:$D$4‘,null,3),//三班
);
#根据取得的东西用于获取图表的框架
$series = array(
    new PHPExcel_Chart_DataSeries(
            PHPExcel_Chart_DataSeries::TYPE_LINECHART,
            PHPExcel_Chart_DataSeries::GROUPING_STANDARD,
            range(0,count($labels) - 1),
            $labels,
            $xlabels, 
            $datas
    )
    
);
$layout = new PHPExcel_Chart_layout();
$layout->setShowVal(true);
$areas = new PHPExcel_Chart_PlotArea($layout,$series);
$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT,$layout,false);
#设定图表的标题
$title = new PHPExcel_Chart_Title(‘高一学生成绩分布‘);
$ytitle = new PHPExcel_Chart_Title(‘单位(人数)‘);
$chart = new PHPExcel_Chart(
    ‘line_chart‘,
     $title, 
     $legend,
     $areas,
     true,
     false,
     null,
     $ytitle

);
#生成图表的位置
$chart->setTopLeftPosition(‘A7‘)->setBottomRightPosition(‘K25‘);
#将chart添加到表格当中
$objSheet->addChart($chart);

#生成excel文件
// $objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel5‘);
$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel2007‘);
#加载生成好的图表
$objWrite->setIncludeCharts(true);
#调用方法,判断EXCEL文件类型
browser_export(‘Excel2007‘,‘chart.xlsx‘);
// browser_export(‘Excel5‘,‘export_browser.xls‘);
#浏览器输出
$objWrite->save("php://output");

function browser_export($type,$filename)
{    
    #Excel5 - 03   Excel2007 - 07
    if($type == ‘Excel5‘)  
    {    
        #excel-2003
        header(‘Content-Type: application/vnd.ms-excel‘);
    }
    else
    {
        #excel-2007
        header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);
    }
    #注意输出的文件文件:不设置输出浏览器文件名字,则使用当前脚本的名字
    header(‘Content-Disposition: attachment;filename=‘.$filename);
    header(‘Cache-Control: max-age=0‘);
}


?>

生成结果:

技术分享

 

二、PHPExcel导入操作

技术分享

1.PHP导入Excel

数据 -- read.xls

技术分享

1.1全部读取

 

<?php
/*
    PHPExcel导入:全部读取
 */
header("Content-Type:text/html;charset=utf-8");
$dir = dirname(__FILE__);
#引入读取Execl的类文件
require $dir."/excel/PHPExcel/IOFactory.php";
#获取要读取文件的路径和文件名
$filename = $dir."/read.xls";
#加载Excel文件
$objPHPExcel = PHPExcel_IOFactory::load($filename);
#获取Excel文件中sheet的总数
/*
$sheetCount = $objPHPExcel->getSheetCount();
for ($i=0; $i < $sheetCount; $i++) { 
    $data = $objPHPExcel->getSheet($i)->toArray();
    print_r($data);
}
*/
#循环取sheet
foreach ($objPHPExcel->getWorksheetIterator() as $sheet)
{    
    #逐行处理
    foreach ($sheet->getRowIterator() as $row)
    {    
        if ($row->getRowIndex() < 2) 
        {
            continue;
        }
        #逐列读取
        foreach ($row->getCellIterator() as $cell) {
            $data = $cell->getValue();
            echo $data.‘ ‘;


        }
        echo ‘<br />‘;

    }
    echo ‘<br />‘;
}
?>

 

生成结果:

技术分享

 

 

1.2部分读取

<?php
/*
    PHPExcel导入:部分加载/选择加载
 */
header("Content-Type:text/html;charset=utf-8");
$dir = dirname(__FILE__);
#引入读取Execl的类文件
require $dir."/excel/PHPExcel/IOFactory.php";
#获取要读取文件的路径和文件名
$filename = $dir."/read.xls";
#自动获取Excel的文件类型
$filetype= PHPExcel_IOFactory::identify($filename);
#获取文件读取操作对象
$objReader = PHPExcel_IOFactory::createReader($filetype);
#选择要读取的sheet
// $sheetname = "一年级";
$sheetname = array("一年级","二年级");
$objReader->setLoadSheetsOnly($sheetname);

#加载Excel文件
$objPHPExcel = $objReader->load($filename);
#获取Excel文件中sheet的总数
/*
$sheetCount = $objPHPExcel->getSheetCount();
for ($i=0; $i < $sheetCount; $i++) { 
    $data = $objPHPExcel->getSheet($i)->toArray();
    print_r($data);
}
*/
#循环取sheet
foreach ($objPHPExcel->getWorksheetIterator() as $sheet)
{    
    #逐行处理
    foreach ($sheet->getRowIterator() as $row)
    {    
        if ($row->getRowIndex() < 2) 
        {
            continue;
        }
        #逐列读取
        foreach ($row->getCellIterator() as $cell) {
            $data = $cell->getValue();
            echo $data.‘ ‘;


        }
        echo ‘<br />‘;

    }
    echo ‘<br />‘;
}
?>

生成结果:

技术分享

 

PHPExcel启用缓存

技术分享

小结:

技术分享

 

PHPExcel导入导出

标签:

原文地址:http://www.cnblogs.com/bybelief/p/5184832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!