您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php导入及导出excel文件

2024/5/19 1:13:46发布15次查看
对excel表格进行操作,要用到phpexcel插件。由于我一般都用的是ci框架,以ci框架来介绍。
首先要引入phpexcel的相关文件:
$this->load->library('phpexcel/iofactory');$this->load->model('search_model');
接下来介绍怎么导出excel文件,首先要新建工作表,并对它进行初始化:
//新建工作表$objphpexcel = new phpexcel();// 操作第一个工作表 $objphpexcel->setactivesheetindex(0); // 设置工作薄名称 $objphpexcel->getactivesheet()->settitle(集合); // 设置默认字体和大小 $objphpexcel->getdefaultstyle()->getfont()->setname(宋体); $objphpexcel->getdefaultstyle()->getfont()->setsize(10);
然后设置表头,当然也可以不设置,setcellvaluebycolumnandrow($col,$row,$name)方法第一个参数是操作的列(起始是0),第二个参数是操作的行(起始是1),第三个参数是你要设置的值:
$objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(0, 1, );$objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(1, 1, imsi);$objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(2, 1, imei);$objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(3, 1, 设备号);$objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(4, 1, 号段);$objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(5, 1, 归属地);$objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(6, 1, 运营商);$objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(7, 1, 时间);
设置好表头后,就开始逐行的赋值了,操作方法同上:
$row = 2;$i = 0;foreach($data as $item){ $objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(0, $row, $i+1); $objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(1, $row, $item['qq']); $objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(2, $row, $item['msn']); $objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(3, $row, $item['deviceid']); $objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(4, $row, $item['rtx']); $objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(5, $row, $item['area']); $objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(6, $row, $item['type']); $objphpexcel->getactivesheet()->setcellvaluebycolumnandrow(7, $row, $item['timestamp']); $row++; $i++;}
最后收尾,将文件输出到页面,提供下载:
$objwriter = iofactory::createwriter($objphpexcel, 'excel5'); ob_end_clean();header(pragma: public); header(expires: 0); header(cache-control:must-revalidate, post-check=0, pre-check=0); header(content-type:application/force-download); header(content-type: application/vnd.ms-excel;charset=utf-8); header(content-type:application/octet-stream); header(content-type:application/download); header(content-disposition:attachment;filename=result.xls); //定义文件名 header(content-transfer-encoding:binary); $objwriter->save(php://output);
导入方法也与之类似,首先将文件上传到后台,获取路径然后打开excel:
$orig_name = explode('.',$upload_data['orig_name'])[0];//原始文件名$extend=strrchr ($upload_data['file_name'],'.'); //获取文件类型$readertype = ($extend == .xlsx) ? excel2007 : excel5;$path = $config['upload_path'].$upload_data['file_name']; //文件路径$objphpexcel = new iofactory();$objreader = $objphpexcel::createreader($readertype)->load($path);$sheet = $objreader->getsheet( 0 );
然后循环读取数据,入库:
$highestrow = $sheet->gethighestrow(); // 取得总行数 但是很多无数据的空白行也读取了,所以未采用此方法$highestcolumn = $sheet->gethighestcolumn(); // 取得总列数$colspan = range( 'a', $highestcolumn );$rowarray = $sheet->getrowdimensions();// 取得总行数 $rowcount = count($rowarray);//循环读取excel文件(因为第一行我一般都加了表头,所以总是从第二行开始读数据)for ( $j = 2; $j getactivesheet()->getcell( $value . $j )->getvalue(); } //插入表中 $sql = insert into im_blacklist(`name`,`mac`,`imsi`,`imei`,`groupid`) values('.$array[1].','.$array[2].',.$array[3].,.$array[4].,.$id.); $this->db->query($sql);}
但是此方法读取时跟excel光标所在行有关联,最好打开excel将光标移动到表格右下角,再关闭excel进行读操作,这时才能正确读取到所有数据。
以上就介绍了php导入及导出excel文件,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product