ThinkPHP 3.2 + PHPExcel 导入导出文件 第三方类库不能用问题解决
2014-11-09 16:36
881 查看
ThinkPHP 3.2 + PHPExcel 导入导出文件 第三方类库不能用问题解决
ThinkPHP3.2 采用了namesapce,就是所谓的命名空间,会导致很多盆友放到/Vendor下边导入文件的时候出现各种问题,鄙人百度了好多,但是好多都是老版本,最新版的ThinkPHP跟PHPExcel一直没有解决,没有办法,只能看代码,终于,找到了这个问题的解决办法,在这里Mark下,有需要的盆友可以看看。
把PHPExcel加压之后的文件里边的Classes的文件夹 PHPExcel 跟 php文件 PHPExcel.php 放到你\ThinkPHP\Library\Vendor 目录下,然后在Controller中这样写:
导入代码实例:
public function importExcel(){
vendor('PHPExcel');
$PHPExcel = new \PHPExcel();
$saveFile = '/mnt/www/tp/Application/Home/Controller/test.xlsx';
$PHPReader = new \PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($saveFile)){
$PHPReader = new \PHPExcel_Reader_Excel5();
if(!$PHPReader->canRead($saveFile)){
echo 'no Excel';
return ;
}
}
$PHPExcel = $PHPReader->load($saveFile);
$currentSheet = $PHPExcel->getSheet(0);
/**get max column*/
$allColumn = $currentSheet->getHighestColumn();
/**get max row*/
$allRow = $currentSheet->getHighestRow();
$return = array();
$i=0;
for($currentRow = 2;$currentRow <= $allRow;$currentRow++){
for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){
$count = ord($currentColumn) - 65;
$val = $currentSheet->getCellByColumnAndRow($count,$currentRow)->getValue();
}
$i++;
}
}
导出实例代码:
public function exportExcel(){
vendor('PHPExcel');
$objExcel = new \PHPExcel();
//set document Property
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
$objActSheet = $objExcel->getActiveSheet();
$key = ord("A");
$objActSheet->setCellValue("A1", 'test1');
$objActSheet->setCellValue("A2", 'test2');
$objActSheet->setCellValue("B1", 'test3');
$objActSheet->setCellValue("B2", 'test4');
$outfile = "test.xls";
//export to exploer
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$outfile.'"');
header("Content-Transfer-Encoding: binary");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter->save('php://output');
exit;
}
各位可以试下,反正我是测试过了,至于你们信不信,反正我是信啦。
PS:其实没啥,就是导入文件之后,所有的new 都加个\,你就成功了,原来生活如此简单哦也!
再PS:第三方类库(TP的命名方式是已.class.php结尾的,如果你的类库中不是已这种方式结尾),请放到Think/Library/Vender中,然后使用vender()方式调用,比如你的Vendor文件夹下有个PHPExcel.php的文件,你只需要vendor('PHPExcel');如果你的Vendor文件夹下有个PHPExcel的问价夹,里边test.php文件,你只需要vendor('PHPExcel.test');
一次类推即可。
本文仅供初学者讨论学习,大牛请绕道,不喜勿喷,共建和谐社会!
ThinkPHP3.2 采用了namesapce,就是所谓的命名空间,会导致很多盆友放到/Vendor下边导入文件的时候出现各种问题,鄙人百度了好多,但是好多都是老版本,最新版的ThinkPHP跟PHPExcel一直没有解决,没有办法,只能看代码,终于,找到了这个问题的解决办法,在这里Mark下,有需要的盆友可以看看。
把PHPExcel加压之后的文件里边的Classes的文件夹 PHPExcel 跟 php文件 PHPExcel.php 放到你\ThinkPHP\Library\Vendor 目录下,然后在Controller中这样写:
导入代码实例:
public function importExcel(){
vendor('PHPExcel');
$PHPExcel = new \PHPExcel();
$saveFile = '/mnt/www/tp/Application/Home/Controller/test.xlsx';
$PHPReader = new \PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($saveFile)){
$PHPReader = new \PHPExcel_Reader_Excel5();
if(!$PHPReader->canRead($saveFile)){
echo 'no Excel';
return ;
}
}
$PHPExcel = $PHPReader->load($saveFile);
$currentSheet = $PHPExcel->getSheet(0);
/**get max column*/
$allColumn = $currentSheet->getHighestColumn();
/**get max row*/
$allRow = $currentSheet->getHighestRow();
$return = array();
$i=0;
for($currentRow = 2;$currentRow <= $allRow;$currentRow++){
for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){
$count = ord($currentColumn) - 65;
$val = $currentSheet->getCellByColumnAndRow($count,$currentRow)->getValue();
}
$i++;
}
}
导出实例代码:
public function exportExcel(){
vendor('PHPExcel');
$objExcel = new \PHPExcel();
//set document Property
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
$objActSheet = $objExcel->getActiveSheet();
$key = ord("A");
$objActSheet->setCellValue("A1", 'test1');
$objActSheet->setCellValue("A2", 'test2');
$objActSheet->setCellValue("B1", 'test3');
$objActSheet->setCellValue("B2", 'test4');
$outfile = "test.xls";
//export to exploer
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$outfile.'"');
header("Content-Transfer-Encoding: binary");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter->save('php://output');
exit;
}
各位可以试下,反正我是测试过了,至于你们信不信,反正我是信啦。
PS:其实没啥,就是导入文件之后,所有的new 都加个\,你就成功了,原来生活如此简单哦也!
再PS:第三方类库(TP的命名方式是已.class.php结尾的,如果你的类库中不是已这种方式结尾),请放到Think/Library/Vender中,然后使用vender()方式调用,比如你的Vendor文件夹下有个PHPExcel.php的文件,你只需要vendor('PHPExcel');如果你的Vendor文件夹下有个PHPExcel的问价夹,里边test.php文件,你只需要vendor('PHPExcel.test');
一次类推即可。
本文仅供初学者讨论学习,大牛请绕道,不喜勿喷,共建和谐社会!
相关文章推荐
- ThinkPHP 3.2 + PHPExcel 导入导出文件 第三方类库不能用问题解决
- ThinkPHP 3.2 PHPExcel 导入导出文件 第三方类库不能用问题解决
- ThinkPHP3.2+PHPExcel1.8版类库 实现导入导出excel表
- ThinkPHP3.2 + PHPExcel 进行execl文件导出操作
- PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/classname
- 解决Chrome不能导入IE导出的htm格式书签文件问题
- nginx +phpfastcgi 环境下 导出excel文件,超时,数据被截断问题,解决
- jasper导出excel(03)文件,不能加粗单元格文本(第一个操作加粗的话),谁来帮个忙,解决哈,感谢。
- 导出excel文件 解决科学计数法问题
- php使用mysqldump命令导出数据 文件内容为空 的解决(密码不能为空)
- 在使用 ADO.NET 导出 Excel 文件时,设置 IMEX=1 仍不能导出所有数据的解决办法
- [原创]大量数据导出为Excel文件的问题解决(C#,ASP.NET)
- 导出Excel文件 解决科学计数法问题
- 【学习点滴-php】使用phpExcel类导出excel文件相关问题总结
- PHP ExcelParser Pro v.4.2可以解决excel导入的问题,可是我.......不知道怎么配置???
- 从EXCEL导入文件时无法将DBNull.Value强制转换为类型。。。,请使用可空类型 问题的解决
- php数据导入导出之excel(csv文件)
- 导出excel文件 解决科学计数法问题
- Php导出Excel文件乱码的解决
- Java如何解决Excel导入文件时科学计数问题