一、导出
使用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文件 最终效果如下:
二、导入
示例代码如下:<?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 '
';
print_r($data_arr); //输出已经读取完excel文件的数据
echo '
';/*
$data_arr就是我们使用PHPExcel类库读取完excel文件的数据(一个二维数组)了,
拿到这个数据我们就可以对其进行插入到数据库里了(比如mysql等)
*/
?>
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。