PHPExcel的使用
最近在项目中需要把Excel表格中的数据导入到数据库中,同时还要求把数据库中的数据导出到Excel中,所以在这里对PHPExcel的操作进行总结,大致分为上面的两种情况。
PHPExcel类库下载地址http://download.csdn.net/detail/li741350149/9792683,下载完成解压到你的项目中去,就可以使用了。为了清晰,我的目录结构如下:
在使用前,请先引入文件
导入数据到数据库
require_once "./PHPExcel/PHPExcel/IOFactory.php";
require_once "./PHPExcel/PHPExcel.php";
Excel结构:
/**
* 导入数据到数据库
* @param $file 要导入的Excel的文件路径
* @return bool 保存数据成功,返回true;
*/
public function setDataToDb($file)
{
date_default_timezone_set('PRC');//设置时区
$fileType = PHPExcel_IOFactory::identify($file);//得到Excel的后缀类型
$objReader = PHPExcel_IOFactory::createReader($fileType);
$excelpath = $file;
$objPHPExcel = $objReader->load($excelpath);//进行加载
$sheet = $objPHPExcel->getSheet(0);//获取第一个sheet
$highestRow = $sheet->getHighestRow(); //取得总行数
$highestColumn = $sheet->getHighestColumn(); //取得总列数
//进行循环,取出数据
$data = array();
for ($j = 2; $j <= $highestRow; $j++) //从第二行开始读取数据
{
for ($k = 'A'; $k <= $highestColumn; $k++) //从A列读取数据
{
$arr[$objPHPExcel->getActiveSheet()->getCell("$k" . 1)->getValue()] = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
}
var_dump($arr);
echo '<br/>';
/*
* 操作数据库把数据存到数据库中,在这里只是简单的展示了出来。
*/
}
return true;
}
这里只是把数据取出来,操作数据库并没有写,可以按照自己的逻辑进行编写
导出数据到Excel
/**
* @param $file 保存文件的路径
* @param $filename 文件名字
* @param $data 从数据库得到的数据
*/
public function getDataFromDb($file,$filename,$data){
date_default_timezone_set('PRC');//设置时区
$objPHPExcel = new PHPExcel();
$objPHPExcel -> setActiveSheetIndex(0); //设置Sheet当前活动的sheet为0;
$objSheet = $objPHPExcel -> getActiveSheet(); //得到操作对象
$objSheet -> setCellValue("A1","姓名") //设置Excel第一行的数据说明。
-> setCellValue("B1","年龄")
-> setCellValue("C1","电话")
-> setCellValue("D1","地址")
-> setCellValue("E1","编号");
$j = 2;
//把数据保存到Excel中
foreach ($data as $k => $v){
$objSheet -> setCellValue("A".$j,$v['姓名'])
-> setCellValue("B".$j,$v['年龄'])
-> setCellValue("C".$j,$v['电话'])
-> setCellValue("D".$j,$v['地址'])
-> setCellValue("E".$j,$v['编号']);
$j++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//文件保存路径
$path = $file . "/" . $filename . ".xls";
$res = $objWriter->save($path);
//把生成的Excel文件下载到本地
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.mb_convert_encoding($filename.".xls","gb2312","utf-8")); //转换文件名的编码
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
}
数据在这里只是模拟出来的。并不是从数据库中得到的。同时把生成的Excel通过浏览器下载到本地。
生成的样式
Test.php中的代码:
<?php
/**
* 测试Excel.class.php类
* User: Administrator
* Date: 2017/3/29 0029
* Time: 16:19
*/
require_once "Excel.class.php";
$file = "D:/employee.xlsx";
$excel = new Excel();
//$excel -> setDataToDb($file);
$file = "D:";
$data = array(
array("姓名" => "小明",'年龄' => 12,"电话" => "12345678910","地址" => "郑州","编号" => 1254),
array("姓名" => "小华",'年龄' => 13,"电话" => "12345678912","地址" => "郑州","编号" => 1255),
array("姓名" => "小张",'年龄' => 14,"电话" => "12345678913","地址" => "郑州","编号" => 1256),
array("姓名" => "小杨",'年龄' => 15,"电话" => "12345678918","地址" => "郑州","编号" => 1257),
);
$excel -> getDataFromDb($file,'lijiafei',$data);
总结
上面只是PHPExcel最简单的使用,PHPExcel还有很多功能可以使用,同时也可以操作多个Sheet,在这里也只是操作了一个。可以自行百度。