使用PHPExcel完成导出以及导入

一、导出

使用PHPExcel类库完成数据导出的功能。类库文件以及code file(代码文件)会在文章最底部提供下载。好了 话不多说直接上代码

<?php

//导出数据为excel格式

//要导出的数据数组(这里通常都是从数据库[mysql等]读取出来的数据  这里我就直接写一个数组来代替了)
$arr = array(
    0 => array('book_name' => 'PHP','price' => '99.00','isbn' =>'11-111'),
    1 => array('book_name' => 'mysql','price' => '100.00','isbn' => '22-222'),
    2 => array('book_name' => 'Linux','price' => '110.00','isbn' => '33-333')
);

//引入类库文件
require_once 'PHPExcel.php';

//创建PHPExcel对象
$objPHPExcel=new PHPExcel();

//设置文件属性
$objPHPExcel->getProperties()->setCreator('http://www.jb51.net')
    ->setLastModifiedBy('http://www.jb51.net')
    ->setTitle('Office 2007 XLSX Document')
    ->setSubject('Office 2007 XLSX Document')
    ->setDescription('Document for Office 2007 XLSX, generated using PHP classes.')
    ->setKeywords('office 2007 openxml php')
    ->setCategory('Result file');

//给导出的excel添加列名称
$objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue('A1','书名')   //设置A1单元格的名称为 书名
    ->setCellValue('B1','价格')   //设置B1单元格的名称为 价格
    ->setCellValue('C1','编号');  //设置C1单元格的名称为 编号

//设置excel文件的指定的列的单元格的宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(13);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);

//循环数组给A、B、C等列添加对应的数据
$i=2;  //从excel文件的第2行开始逐一写入数据
foreach($arr as $key => $val)
{
    $objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('A'.$i,$val['book_name'])
        ->setCellValue('B'.$i,' '.$val['price'])
        ->setCellValue('C'.$i,$val['isbn']);
    $i++;
}

$filename=urlencode('').date('YmdHis'); //用时间戳给导出的excel文件命名

//*生成xlsx文件
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8');

//excel-2007格式 如需要导出低版本excel 最好是将后缀扩展名从xlsx改成xls
header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
header('Cache-Control: max-age=0');

//保存导出的excel文件(导出的是excel-2007格式 如果需要导出低版本excel 将'Excel2007'参数换成'Excel5')
$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
$objWriter->save('php://output');
exit;

?>

导出之后打开保存下来的excel文件 最终效果如下:

export_excel.png

二、导入

示例代码如下:

<?php

//使用PHPExcel导入数据示例

//加载PHPExcel类库文件
require_once './PHPExcel.php';
require_once './PHPExcel/IOFactory.php';
require_once './PHPExcel/Reader/Excel5.php';

/*一般要导入的excel文件是用户自己上传的excel格式的文件。这里我就直接以demo_import_excel.xlsx这个文件
来当做已经上传好了的excel文件
*/
$file_name = './demo_import_excel.xlsx';

$objReader   = new PHPExcel_Reader_Excel2007();
$objPHPExcel = $objReader->load($file_name);


$sheet = $objPHPExcel->getSheet(0);

$highestRow = $sheet->getHighestRow();  //总行数

$highestColumn = $sheet->getHighestColumn(); //总列数

//开始循环读取excel单元格里的数据
for($loop = 3; $loop <=$highestRow; $loop++)
{
    /*
    注意:这里的A3:H 其中A3表示是从A3的这个单元格开始往下读取 一直读取到excel单元格的H列结束,第二次循环($loop++之后)
    则开始从A4单元格开始读取 一直读取到H列。。。等等等等 直到循环完毕所有有值的excel行数(即:$highestRow)
    */
    $data_arr = $objPHPExcel->getActiveSheet()->rangeToArray( 'A3:H'.$highestRow );
}

echo '<pre>';
print_r($data_arr); //输出已经读取完excel文件的数据
echo '</pre>';

/*
$data_arr就是我们使用PHPExcel类库读取完excel文件的数据(一个二维数组)了,
拿到这个数据我们就可以对其进行插入到数据库里了(比如mysql等)
*/
?>


声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复12人评论7,777人参与