使用PHPExcel导入导出excel格式文件

使用PHPExcel导入导出excel格式文件

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

使用PHPExcel导入导出excel格式文件 


作者:zccst 




因为导出使用较多,以下是导出实现过程。 




第一步,将PHPExcel的源码拷贝到项目的lib下 




文件包含:PHPExcel.php 和 目录PHPExcel 


源码见附件 




注1:源码是zip格式,能在windows和linux通用。 


注2:PHPExcel.zip是干净代码,能够直接引用。PHPExcel2.zip有svn记录,不适合直接引用。 




第二步:在须要导出的handler页面中引用 




1,在头部引入三个文件 

Php代码  
收藏代码

  1. //环境变量设置(新增PHPExcel)  
  2. set_include_path(‘.’. PATH_SEPARATOR . Yii::app()->basePath.‘/lib/PHPExcel’ . PATH_SEPARATOR . get_include_path());  
  3. //注:在yii中,也能够直接Yii::import(“application.lib.PHPExcel.*”);  
  4.   
  5. //引入PHPExcel相关文件  
  6. require_once “PHPExcel.php”;  
  7. require_once ‘PHPExcel/IOFactory.php’;  
  8. require_once ‘PHPExcel/Writer/Excel5.php’;  





2,将数据放入excel表格中 

Php代码  
收藏代码

  1. //新建  
  2. $resultPHPExcel = new PHPExcel();  
  3.   
  4. //设置參数  
  5.   
  6. //设值  
  7. $resultPHPExcel->getActiveSheet()->setCellValue(‘A1’‘季度’);  
  8. $resultPHPExcel->getActiveSheet()->setCellValue(‘B1’‘名称’);  
  9. $resultPHPExcel->getActiveSheet()->setCellValue(‘C1’‘数量’);  
  10. $i = 2;  
  11. foreach($data as $item){  
  12.     $resultPHPExcel->getActiveSheet()->setCellValue(‘A’ . $i$item[‘quarter’]);  
  13.     $resultPHPExcel->getActiveSheet()->setCellValue(‘B’ . $i$item[‘name’]);  
  14.     $resultPHPExcel->getActiveSheet()->setCellValue(‘C’ . $i$item[‘number’]);  
  15.     $i ++;  
  16. }  





3,设置导出的一些參数 


版本号一: 

Php代码  
收藏代码

  1. //设置导出文件名称  
  2. $outputFileName = ‘total.xls’;  
  3. $xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);  
  4. //ob_start();  ob_flush();  
  5. header(“Content-Type: application/force-download”);  
  6. header(“Content-Type: application/octet-stream”);  
  7. header(“Content-Type: application/download”);  
  8. header(‘Content-Disposition:inline;filename=”‘.$outputFileName.‘”‘);  
  9. header(“Content-Transfer-Encoding: binary”);  
  10. header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);  
  11. header(“Last-Modified: “ . gmdate(“D, d M Y H:i:s”) . ” GMT”);  
  12. header(“Cache-Control: must-revalidate, post-check=0, pre-check=0”);  
  13. header(“Pragma: no-cache”);  
  14.   
  15. $xlsWriter->save( “php://output” );  





版本号二: 

Php代码  
收藏代码

  1. $writer = PHPExcel_IOFactory::createWriter($resultPHPExcel‘Excel5’);  
  2. $writer->setTempDir(Yii::app()->basePath.‘/runtime’);  
  3. $filename = “单.xls”;  
  4. header(“Pragma: public”);  
  5. header(“Cache-Control: must-revalidate, post-check=0, pre-check=0”);  
  6. header(“Content-Type: application/force-download”);  
  7. header(‘Content-Type: application/vnd.ms-excel’);  
  8. header(‘Content-Disposition: attachment;filename=”‘ . $filename . ‘”‘);  
  9. header(‘Cache-Control: max-age=0’);  
  10. $writer->save(‘php://output’);  





4,添加�附件(非必需) 

Php代码  
收藏代码

  1. $objPHPExcel    = new PHPExcel();  
  2. $objReader = PHPExcel_IOFactory::createReader(‘Excel5’);  
  3. $objReader->setReadDataOnly(true);  
  4.   
  5. foreach($data2 as $item){  
  6.     $fp = dirname(__FILE__) . “/../../../” . $item[‘file_path’] ;  
  7.     $objPHPExcel = $objReader->load($fp);  
  8.     $objWorksheet = $objPHPExcel->getActiveSheet();  
  9.     $resultPHPExcel->addExternalSheet($objWorksheet);  
  10. }  







高级主题
 


1,excel5与excel2007差别 


zipArchive.php 


有非常多php(php.ini)不支持excel2007,所以建议使用excel5。 






2,设置暂时文件位置 


假设报暂时文件名称错,则更改暂时文件路径 


xlsWriter.setDirName(Yii::app()->basePath.’/runtime’); 






3,设置excel单元格的格式 


过滤 




4,输出有错。 


默认$xlsWriter->save( “php://output” );可能由于缓存不够大,而显示不完整,所以做个中转,方式例如以下: 

Php代码  
收藏代码

  1. $finalFileName = (Yii::app()->basePath.‘/runtime/’.time().‘.xls’;  
  2. $xlsWriter->save($finalFileName);  
  3. echo file_get_contents($finalFileName);  //file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118758.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月1日 下午7:00
下一篇 2021年12月1日 下午8:00


相关推荐

  • 华三路由交换配置命令_H3C路由器常用基本配置命令「建议收藏」

    华三路由交换配置命令_H3C路由器常用基本配置命令「建议收藏」H3C路由器常用基本配置命令[Quidway]sysnamerouter_name命名路由器(或交换机)[Quidway]delete删除FlashROM中的配置[Quidway]save将配置写入FlashROM[Quidway]interfaceserial0进入接口配置模式[Quidway]quit退出接口模式到系统视图[Quidway]shutdown/undoshutdown…

    2022年10月17日
    2
  • 向量点乘的图形学意义

    向量点乘的图形学意义向量的点乘是入门图形学的重要基础 本身并不复杂 但因为总与叉乘 图形学前期用不着 放在一起讲 搞得新手都很混乱 本文单独讲解一些点乘的图形学意义 新手先忘掉叉乘吧 1 向量向量即空间中的一个点到另一个点 二维向量 2 向量点乘向量点乘通常用来描述一个向量在另一个向量的投影分量 向量点乘的几何意义向量点乘公式如上图的映射结果即为点乘结果 因此 当两个方向向量

    2026年3月18日
    2
  • SpringBoot全局配置long转String 丢失精度[通俗易懂]

    SpringBoot全局配置long转String 丢失精度[通俗易懂]web项目中,Java后端传过来的Long/long类型,前端JS接收会丢失精度。 **本文推荐第三、第四种方式**第一种方式简单粗暴,将所有的Lang类型,改为String,数据库改成varchar类型;第二种方式自己建个配置类extendsWebMvcConfigurerAdapter已经被弃用,直接实现WebMvcConfigurer该接口就行了@EnableWebMvc@ConfigurationpublicclassWebDataConvertConfigimple

    2022年5月15日
    41
  • python挖矿脚本代码_一个挖矿脚本

    python挖矿脚本代码_一个挖矿脚本遇到一台机器偶尔cpu使用率达到80%,触发告警。登录查看后一个sshd2程序导致cpu负载高仔细查看就知道和sshd是两个完全不同的进程,取名sshd2应该只是为了迷惑用户ps-ef查看到父进程是一个/tmp/javax/config.sh,这个文件在当前系统已经删除了,所以只能按照pid号通过lsof-pPID查看打开的文件句柄在/proc/PID/fd里面顺利找到执行脚本#!/bin…

    2022年7月13日
    26
  • vue新建项目,目录文件解释「建议收藏」

    1.2.1、build文件夹是保存一些webpack的初始化配置。config文件夹保存一些项目初始化的配置。2、node_modules是npm加载的项目依赖的模块。3、src目录是我们要开发的目录,打开是这样的:其中assets:用来放置图片components:用来放组件文件app.vue:是项目入口文件,代码如下:App.vue相当于…

    2022年4月6日
    63
  • 不同数据库的特点_简述数据库的特点

    不同数据库的特点_简述数据库的特点MySQL1.事务四大特性原子性:不可分割的操作单元,事务中所有操作,要么全部成功;要么撤回到执行事务之前的状态一致性:如果在执行事务之前数据库是一致的,那么在执行事务之后数据库也还是一致的;

    2022年8月1日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号