PHP Excel数据导入
excel数据批量导入是在开发中经常用到的一项功能,我把我在开发中的一些经验写出来,希望能对大家有所帮助,有什么不对的地方,大家多多担待
一:准备工作
先下载PHPExcel扩展包
最终,本人去github上下载了1.8版本的扩展包。
下载地址:PHPExcel1.8版本下载(https://github/PHPOffice/PHPExcel);
二:详细配置
【第一步】将下载的1.8扩展包解压,将里面全部内容复制到vendor文件夹下,并改名为PHPExcel
【第二步】在Base.php中写一个导入函数,详细信息请看代码注释(无需更改),函数代码如下:
//excel文件导入
public function importExcel($file){
include(__DIR__.'/../../../vendor/PHPExcel/Classes/PHPExcel.php');
$cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array('memoryCacheSize' => '16MB');
\PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);//文件缓存
//当前空间不用\,非当前空间要加\
$PHPExcel = new \PHPExcel();//创建一个excel对象
$PHPReader = new \PHPExcel_Reader_Excel2007(); //建立reader对象,excel—2007以后格式
if (!$PHPReader->canRead($file)) {
$PHPReader = new \PHPExcel_Reader_Excel5();//建立reader对象,excel—2007以前格式
if (!$PHPReader->canRead($file)) {
$msg = '不是excel格式文件';
$this->apiReturn(303,$msg);
}
}
$PHPExcel = $PHPReader->load($file); //加载excel对象
$sheet = $PHPExcel->getSheet(0); //获取指定的sheet表
$rows = $sheet->getHighestRow();//行数
$cols = $sheet->getHighestColumn();//列数
$data = array();
for ($i = 1; $i <= $rows; $i++){ //行数是以第1行开始
$count = 0;
for ($j = 'A'; $j <= $cols; $j++) { //列数是以A列开始
$value = $sheet->getCell($j . $i)->getValue();
if ($value) {
$data[$i - 1][$count] = (string)$sheet->getCell($j . $i)->getValue();
$count += 1;
}
}
}
return $data;
}
【第三步】】新建一个控制器:Import.php,Import控制器中新建一个方法importTeacher()(这里的代码,请按照实际需求更改),在该方法中调用Base.php中的importExcel()方法,如下
//导入老师信息
public function importTeacher()
{
//接收上传文件
$file = input('file');
if (!$file) {
$this->apiReturn(303, '缺少file');
}
//调用导入excel方法
$data = $this->importExcel($file);
$sql = [];
for ($i = 1; $i < count($data); $i++) {
$sql[$i]['number'] = $data[$i][0];//老师工号
$sql[$i]['name'] = $data[$i][1];//姓名
$sql[$i]['gender'] = $data[$i][2];//性别
$sql[$i]['remarks'] = isset($data[$i][3]) ? $data[$i][3] : '此老师没有备注信息';;//备注
}
//写入数据库
Db::name('auth')->insertAll($sql);
}
注意你导入的excel表中的数据顺序要和你for循环的顺序要一致
总结
此例,大致分为二个大步骤:
1.将下载的 1.8版本扩展包融合到TP5.0框架中;
2.在base.php写一个导入函数;
3.在控制器中调用该公共函数,并循环解析数据写入数据库中
至此,TP5.0的excel导入功能已经基本完成,如需其他配置,请参考phpExcel开发文档。
更多推荐
PHP Excel数据导入(超详细)
发布评论