excel用php做表格?所以工作的第一步就是要将数据从excel中取出来。这里我使用到了一个开源php处理excel类:phpexcel. 该项目的详细信息http://phpexcel.codeplex.com/。那么,excel用php做表格?一起来了解一下吧。
在工作中需要处理多语言的翻译指粗问题,翻译都是写在excel表格里面。为了处理方便我就保留中文和英文两列。
这样需要将这些数据从excel中取出来,然乎保存在excel的数组中,通过使用循环数组将相应的数据放入到数据库中。
所以工作的第一步就是要将数据从excel中取出来。这里我使用到了一个开源php处理excel类:phpexcel.
该项目的详细信息
http://phpexcel.codeplex.com/
。
我目前使用的是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中,便于展示和做成更美观的效果。
php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=test_data.xls");$tx=’表局陆头’; echo $tx."nn"; //输桐悄顷出内容如下: echo "姓名"."t"; echo "年龄"."t"; echo "学历"."t";echo "n";echo "张三"."t"; echo "25"."t"; echo "本科"."t"; >如运橡果你一定要输入xls标准的excel文件可参考下面方法/** * 输出XLS的头信息 * 注:使用此函数前后都不应有任何数据输出
对于任何一个网站肯定是少不了功能,常见的功能有图片、、Excel表格,如果文件比较小的话,那么不会遇到任何的问题,但是当文件信息而超明银过了PHP的最大内存,那么在这个时候它就会有的内存溢出的问题。
那么它们是因为什么而发生的?对于这个过程的原理才是埋碧我们应该真正要去弄明白的事情
大数据量的EXCEL文件为何要报错?
PHP在大Excel表格的时候,那么首先它是需要去把MySQL的数据从硬盘上面读取到内存,但读取它是一次性载入到我们的内存,如果说它一次性载入的数据量远远大于最大内存,然后再来执行浏览器的业务。那么这个时候它就会发生我们这个内存溢出。
就比如:说我们现在有100M的数据量,但是我们PHP内存最大只有64M,那么这个它肯定是装不了的,我们可以把那个内存比喻为一个水杯,这个水杯的容量比喻为内存,现在杯子最大容量为64L。你要存放100L。肯定放不下
大事化小,小事化了。拆分成段
从上面可以看到文件,它是分为两步,首先是载入内存然后执行浏览器的输出,那么既然大型文件一次性载入不了,那可以采用“大事化小,小事化了”思路,我们可以实现边写边,也激液宴就是分批次的读取与写入。
根据下列编码程序可以。
1./*** 批量导出数据* @param $arr 从数据库查询罩庆出来,即要导出的数据* $name excel表歌名*/
2.function expExcel($arr,$name){require_once 'PHPExcel.php';
3. //实例化$objPHPExcel = new PHPExcel();/*右键属手洞性所显示的信息*/
4.$objPHPExcel->getProperties()->setCreator("zxf") //->setLastModifiedBy("zxf") //最后一 ->setTitle('数据EXCEL导出') //标题->setSubject('数据EXCEL导出') //主题>setDescription('导物薯握出数据') //描>setKeywords("excel")//标记>setCategory("result file"); //类别
5. //设置当前的表格$objPHPExcel->setActiveSheetIndex(0);// 设置表格第一行显示内容$objPHPExcel->getActiveSheet() ->setCellValue('A1', '业主姓名')->setCellValue('B1', '密码')->setCellValue('C1', '手机号码' ->setCellValue('D1', '地址')
6.//设置第一行为红色字体->getStyle('A1:D1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);$key = 1;/*以下就是对处理Excel里的数据。
PHP如何实现表格Excel的导出
首先PHPExcel包并将包引入到项目中;然后实例化PHPExcel对象;接着设置表格的列,以及列队属性;再将数据添加到表格中;最后将表格文件数据输出即可。
PHPExcel
是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格
ThinkPHP示例
public function exportExcel()
{
//先获取数据
$where['comid'] = session('uid');
$res = M('cheliang')->where($where)->select();
// var_dump($res);die;
//下面就是导出的步骤了
vendor('PHPExcel0.Classes.PHPExcel');
$objPHPExcel = new PHPExcel();
$objPHPExcel->createSheet(0);
$objPHPExcel->setActiveSheetIndex(0);
//只需要把你想要的字段改成你自己需要的就可以了!!!
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '考试人')
->setCellValue('B1', '车牌')
->setCellValue('C1', '考试时间')
->setCellValue('D1', '考试分数')
->setCellValue('E1', '签名');
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);//设置单元格宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('C'巧首)->setWidth(50);//设置单元格宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('D'孝早数)->setWidth(20);//设置单元格宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);//设置单元格宽度
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); //第一行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); //第一行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setBold(true); //第一行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setBold(true); //第一行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setBold(true); //第一行是否加粗
//$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16); //第一行字体大小
// 设置垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C1')->睁如getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
// 设置行高度
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20); //设置默认行高
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); //第一行行高
//循环添加数据,注意的是下面的$kk+2,是因为$kk是下标,从0开始的,而第一行是你的标题,所以要从第二行开始才是你的数据
foreach ($data as $kk => $vv) {
$no = $kk + 2;
$currentSheet = $objPHPExcel->getActiveSheet();
$currentSheet->setCellValue('A' . $no, $vv['xueyuan']['name']);
$currentSheet->setCellValue('B' . $no, $vv['xueyuan']['chepaihao']);
$currentSheet->setCellValue('C' . $no, date('Y-m-d H:i:s',$vv['addtime']).'至'.date('Y-m-d H:i:s',$vv['sbttime']));
$currentSheet->setCellValue('D' . $no, $vv['score']);
//设置单元格高度,这个是重点哦
$currentSheet->getRowDimension($no) -> setRowHeight(40);
// 图片生成
$objDrawing[$kk] = new PHPExcel_Worksheet_Drawing();//这个就是生成图片的类(重点)
$objDrawing[$kk]->setPath('./'.$vv['qmimg']);/图片的路径
// 设置宽度高度
$objDrawing[$kk]->setHeight(85);//照片高度
$objDrawing[$kk]->setWidth(100); //照片宽度
/*设置图片要插入的单元格*/
$objDrawing[$kk]->setCoordinates('E'.$no);
// 图片偏移距离
$objDrawing[$kk]->setOffsetX(12);
$objDrawing[$kk]->setOffsetY(12);
$objDrawing[$kk]->setWorksheet($objPHPExcel->getActiveSheet());
}
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . '文件名称'. '.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}推荐教程:《PHP教程》
以上就是excel用php做表格的全部内容,'D:\Zeal\PHP_LIBS' . PATH_SEPARATOR .get_include_path());/ 以下是使用示例,对于以 /// 开头的行是不同的可选方式,请根据实际需要 打开对应行的注释。如果使用 Excel5 ,输出的内容应该是GBK编码。