php网站源码 excel?开源php视频源码
大家好,如果您还对php网站源码 excel不太了解,没有关系,今天就由本站为大家分享php网站源码 excel的知识,包括开源php视频源码的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
thinkPHP怎样使用PHPExcel导出网站数据为excel
第一步:先去下载PHPExcel插件压缩包,解压后只用到Classes文件夹里面的文件就行。
第二步:然后把Classes文件夹名称改为PHPExcel(也可以不用改),再放在thinkPHP指定的第三方类库目录文件夹Vendor下面,第三方类库目录在ThinkPHP/Library里面
第三步:整理数据,整理成适合excel表格式的数据,不多说直接给代码
publicfunctionexport(){//导出Excel表数据整理
$xlsData=M('table')->select();//查找需要导出的数据
$xlsCell=array(//设置excel文档的格式第一行就相当于标题
array('id','ID号'),
array('title','标题'),
array('time','时间'),
array('content','内容')
);
$newArray=array();//自定义数组
foreach($xlsDataas$k=>$v)
{//然后把所有查找到的数据根据设置第一行的标题相对应放进数组里面
$newArray[$k]['id']=$v['id'];
$newArray[$k]['title']=$v['title'];
$newArray[$k]['time']=date('Y-m-d',$v['time']);
$newArray[$k]['content']=$v['content'];
}
$xlsName='Excel表数据';//设置Excel表文件名称
$this->exportExcel($xlsName,$xlsCell,$newArray);//调用PHPExcel插件,这步的函数也需要自定义
}/**
*@param$xlsName名称
*@param$xlsCell参数(标题数组)
*@param$newArray内容(数据数组)
*/
publicfunctionexportExcel($xlsName,$xlsCell,$newArray){
$xlsTitle=iconv('utf-8','gb2312',$xlsName);//文件名称需要转码避免乱码出错
$xlsCell_num=count($xlsCell);
$newArray_num=count($newArray);
vendor("PHPExcel.PHPExcel");//关键,利用thinkphp内置函数嵌套PHPExcel插件,如果在第二步没有改文件夹名称就这样:vendor("Classes.PHPExcel");点之前表示插件文件夹,点之后的表示PHPExcel.php文件的名称不要后缀名
$objPHPExcel=new\PHPExcel();//实例化PHPExcel
$column_key='A';//excel表的每个单元格都是A1,A2,A3....类似的,大写字母代表列,数字代表行,那么第一行就是标题了
foreach($xlsCellas$k=>$v){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($column.'1',$v);//有多少标题列先写进第一行
$column_key++;//这样循环的好处就是不用限定有多少列,可以根据你的数据表字段有多少就导出多少列
}
for($i=0;$i<$newArray_num;$i++){//第一层循环表示多少行
$column_key='A';
for($j=0;$j<$xlsCell_num;$j++){//第二层表示列
$objPHPExcel->getActiveSheet(0)->setCellValue($column_key.($i+2),$newArray[$i][$xlsCell[$j][0]]);//($i+2)表示从第二行开始,第一行已经设置为标题了
$column_key++;
}
}
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$xlsTitle.xls");//attachment新窗口打印inline本窗口打印
$objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');//Excel5为xls格式,excel2007为xlsx格式
$objWriter->save('php://output');
exit;
}运行后的效果文件图
基于php中使用excel的简单介绍
在工作中需要处理多语言的翻译问题,翻译都是写在excel表格里面。为了处理方便我就保留中文和英文两列。
这样需要将这些数据从excel中取出来,然乎保存在excel的数组中,通过使用循环数组将相应的数据放入到数据库中。
所以工作的第一步就是要将数据从excel中取出来。这里我使用到了一个开源php处理excel类:phpexcel.
该项目的详细信息
。
我目前使用的是phpexcel1.7.3版本,
解压缩后里面有一个PHPExcel和PHPExcel.php文件。
我们主要使用那个PHP文件。见下图文件目录结构
这个版本据说是可以支持excel2007,但是我使用2007编辑的xlsx是无法获得该库的支持。于是乎我就将它转化为2003。感觉支持地很好。
下面介绍一下具体的使用:
复制代码
代码如下:
require_once('./phpexcel1.7.3/PHPExcel.php');
$php_excel_obj
=
new
PHPExcel();
$php_reader
=
newPHPExcel_Reader_Excel2007();
if(!$php_reader->canRead($file_name)){
$php_reader=
new
PHPExcel_Reader_Excel5();
if(!$php_reader->canRead($file_name)){
echo'NO
Excel!';
}
}
$php_excel_obj
=
$php_reader->load($file_name);
$current_sheet
=$php_excel_obj->getSheet(0);
上面的主要功能是初始化相关的excel类,并装载excel第一个sheet
复制代码
代码如下:
$all_column
=$current_sheet->getHighestColumn();
$all_row
=$current_sheet->getHighestRow();
以上分别获得该表格的最大列值(字母表示如:‘G'),和最大的行数(数值表示)
下面将使用循环来讲excel里面的数据读到excel中:
复制代码
代码如下:
$all_arr
=
array();
$c_arr
=
array();
//字符对照表
for($r_i
=
1;
$r_i<=$all_row;
$r_i++){
$c_arr=
array();
for($c_i=
'A';
$c_i<=
'B';
$c_i++){
$adr=
$c_i
.
$r_i;
$value=
$current_sheet->getCell($adr)->getValue();
if($c_i==
'A'
&&
empty($value)
)
break;
if(is_object($value))
$value=
$value->__toString();
$c_arr[$c_i]=
$value;
}
$c_arr&&
$all_arr[]
=
$c_arr;
}
下面简单地介绍一下phpexcel的写操作,这个操作经常用于将数据库中的数据导入到excel中,便于展示和做成更美观的效果。
复制代码
代码如下:
require_once('./phpexcel1.7.3/PHPExcel.php');
$excel_obj
=
new
PHPExcel();
$objWriter
=
newPHPExcel_Writer_Excel5($excel_obj);
$excel_obj->setActiveSheetIndex(0);
$act_sheet_obj=$excel_obj->getActiveSheet();
$act_sheet_obj->setTitle('sheet');
$act_sheet_obj->setCellValue('A1',
'字符串内容');
$act_sheet_obj->setCellValue('A2',
26);
$file_name
=
"output.xls";
$objWriter->save($file_name);
代码很简单,
首先初始化相关的excel写类,然后写入数据,最后保存为xls文件。
输出的效果见图
php怎么导出大量数据的Excel
php导出大量数据到Excel,可以通过生成多个Excel文件,然后压缩成压缩包解决。
方案是:假如我们数据库有10w条数据,每2000条数据生成一个Excel文件,这样每次只要从数据库里查询出2000条数据即可,一定要分页去查询。
原因:主要是数据库性能和写文件性能。分页查询可以解决数据库压力的问题,生成多个文件可以解决单个文件太大,后期维护Excel文件的问题。
要注意的:
1.在导出逻辑文件开头,一定要声明set_time_limit(0),防止脚本超时;
2.每个文件生成后,适当的sleep一下,让程序休息一下下;
3.因为一次导出最后要将生成的多个Excel文件打包成一个压缩包,所以要删除掉生成的Excel文件,节省服务器存储空间;
下面是我实际工作中,写的一个php导出大量数据到Excel的代码,你可以参考一下:
好了,关于php网站源码 excel和开源php视频源码的问题到这里结束啦,希望可以解决您的问题哈!