首先需要去官网http://www.php.cn/xiazai/leiku/1491,下载后只需要Classes目录下的文件即可。

1、PHPExcel导出方法实现过程

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

/**

 * 数据导出

 * @param array $title   标题行名称

 * @param array $data   导出数据

 * @param string $fileName 文件名

 * @param string $savePath 保存路径

 * @param $type   是否下载  false--保存   true--下载

 * @return string   返回文件全路径

 * @throws PHPExcel_Exception

 * @throws PHPExcel_Reader_Exception

 */

function exportExcel($title=array(), $data=array(), $fileName='', $savePath='./', $isDown=false){ 

    include('PHPExcel.php'); 

    $obj = new PHPExcel(); 

  

    //横向单元格标识 

    $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'); 

      

    $obj->getActiveSheet(0)->setTitle('sheet名称');   //设置sheet名称 

    $_row = 1;   //设置纵向单元格标识 

    if($title){ 

        $_cnt = count($title); 

        $obj->getActiveSheet(0)->mergeCells('A'.$_row.':'.$cellName[$_cnt-1].$_row);   //合并单元格 

        $obj->setActiveSheetIndex(0)->setCellValue('A'.$_row, '数据导出:'.date('Y-m-d H:i:s'));  //设置合并后的单元格内容 

        $_row++; 

        $i = 0; 

        foreach($title AS $v){   //设置列标题 

            $obj->setActiveSheetIndex(0)->setCellValue($cellName[$i].$_row, $v); 

            $i++; 

        

        $_row++; 

    

  

    //填写数据 

    if($data){ 

        $i = 0; 

        foreach($data AS $_v){ 

            $j = 0; 

            foreach($_v AS $_cell){ 

                $obj->getActiveSheet(0)->setCellValue($cellName[$j] . ($i+$_row), $_cell); 

                $j++; 

            

            $i++; 

        

    

      

    //文件名处理 

    if(!$fileName){ 

        $fileName = uniqid(time(),true); 

    

  

    $objWrite = PHPExcel_IOFactory::createWriter($obj, 'Excel2007'); //这里Excel2007 可能会报错 如果报错改成 Excel5 再试

  

    if($isDown){   //网页下载 

        header('pragma:public'); 

        header("Content-Disposition:attachment;filename=$fileName.xls"); 

        $objWrite->save('php://output');exit

    

  

    $_fileName = iconv("utf-8", "gb2312", $fileName);   //转码 

    $_savePath = $savePath.$_fileName.'.xlsx'

     $objWrite->save($_savePath); 

  

     return $savePath.$fileName.'.xlsx'

  

//$this->exportExcel(array('姓名','年龄'), array(array('a',21),array('b',23)), '档案', './', true);

2、PHPExcel导入方法实现过程

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

/**

*  数据导入

* @param string $file excel文件

* @param string $sheet

 * @return string   返回解析数据

 * @throws PHPExcel_Exception

 * @throws PHPExcel_Reader_Exception

*/

function importExecl($file='', $sheet=0){ 

    $file = iconv("utf-8", "gb2312", $file);   //转码 

    if(empty($file) OR !file_exists($file)) { 

        die('file not exists!'); 

    

    include('PHPExcel.php');  //引入PHP EXCEL类 

    $objRead = new PHPExcel_Reader_Excel2007();   //建立reader对象 

    if(!$objRead->canRead($file)){ 

        $objRead = new PHPExcel_Reader_Excel5(); 

        if(!$objRead->canRead($file)){ 

            die('No Excel!'); 

        

    

  

    $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'); 

  

    $obj = $objRead->load($file);  //建立excel对象 

    $currSheet = $obj->getSheet($sheet);   //获取指定的sheet表 

    $columnH = $currSheet->getHighestColumn();   //取得最大的列号 

    $columnCnt = array_search($columnH, $cellName); 

    $rowCnt = $currSheet->getHighestRow();   //获取总行数 

  

    $data = array(); 

    for($_row=1; $_row<=$rowCnt; $_row++){  //读取内容 

        for($_column=0; $_column<=$columnCnt; $_column++){ 

            $cellId = $cellName[$_column].$_row

            $cellValue = $currSheet->getCell($cellId)->getValue(); 

             //$cellValue = $currSheet->getCell($cellId)->getCalculatedValue();  #获取公式计算的值 

            if($cellValue instanceof PHPExcel_RichText){   //富文本转换字符串 

                $cellValue = $cellValue->__toString(); 

            

  

            $data[$_row][$cellName[$_column]] = $cellValue

        

    

  

    return $data

}

不用PHPExcel类也能导出数据:

/*
* @creator Jimmy
* @data 2018/1/05
* @desc 数据导出到excel(csv文件)
* @param $filename 导出的csv文件名称 如date("Y年m月j日").'-test.csv'
* @param array $tileArray 所有列名称
* @param array $dataArray 所有列数据
*/
public function exportToExcel($filename, $tileArray=[], $dataArray=[]){
ini_set('memory_limit','512M');
ini_set('max_execution_time',0);
ob_end_clean();
ob_start();
header("Content-Type: text/csv");
header("Content-Disposition:filename=".$filename);
// $fp=fopen('php://output','w');
$fp=fopen('D:\phpStudy\PHPTutorial\WWW\juyouyu\Source\API\backend\web\\'.$filename,'w');
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));//转码 防止乱码(比如微信昵称(乱七八糟的))
fputcsv($fp,$tileArray);
$index = 0;
foreach ($dataArray as $item) {
if($index==1000){
$index=0;
ob_flush();
flush();
}
$index++;
fputcsv($fp,$item);
} ob_flush();
flush();
ob_end_clean();
} public function actionIndex()
{
$a = array('姓名','年龄');
$b = array(array('a',21),array('b',23));
$filename = date("Y年m月j日").'-test.csv';
$this->exportToExcel($filename,$a,$b);
}

PHP 利用PHPExcel 文件导入(也可保存到本地或者服务器)、导出的更多相关文章

  1. 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法

    下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片   将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...

  2. 使用URLConnection下载文件或图片并保存到本地

    有时候需要从网络上面下载图片到本地进行保存,代码如下: package com.jointsky.jointframe.test; import java.io.FileOutputStream; i ...

  3. php 文件上传 以及保存在本地的乱码问题处理

    要知道两点: ①浏览器传到PHP程序中是UTF-8编码 ②PHP程序保存上传的文件,要转换成GBK编码才保存在本地中,否则如果直接使用浏览器传过来的文件名保存在本地,会出现文件名乱码. <?ph ...

  4. java获取远程网络图片文件流、压缩保存到本地

    1.获取远程网路的图片 /** * 根据地址获得数据的字节流 * * @param strUrl * 网络连接地址 * @return */ public static byte[] getImage ...

  5. 如何将S/4HANA系统存储的图片文件用Java程序保存到本地

    我在S/4HANA的事务码MM02里为Material维护图片文件作为附件: 通过如下简单的ABAP代码即可将图片文件的二进制内容读取出来: REPORT zgos_api. DATA ls_appl ...

  6. C# 实现文件(夹)在ftp服务器间的同步【无需将文件(夹)保存到本地】

    C#实现不同ftp服务器间文件(夹)同步 图1 实现不同ftp服务器间文件(夹)同步的实现思路图 /// <summary> /// 将文件夹1从ftp服务器1移到ftp服务器2文件夹2 ...

  7. EXCEL文件导入时报_未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序

    解决办法: 解决访问Excel数据源时出现 未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序1.确保安装了Microsoft.ACE.OLEDB.12.0驱动 http:/ ...

  8. 文件压缩跟解压(本地&Linux服务器)

    远程解压需要的jar包: <dependency> <groupId>commons-net</groupId> <artifactId>commons ...

  9. mysql source命令超大文件导入方法总结

    本文章来给各位朋友介绍利用mysql source命令超大文件导入方法总结,下面收集了两种解决办法,一种是把数据库分文件导出然后再导入,另一种是修改my.ini配置文件,下面我一一给各位朋友介绍. 导 ...

随机推荐

  1. C# 反射获取属性值、名称、类型以及集合的属性值、类型名称

    实体类 class Product { public string Id { get; set; } public string Name { get; set; } public List<P ...

  2. leetcode每日刷题计划-简单篇day7

    还没有背单词,头晕脑胀 Num 66 加一 Plus One 注意就是进位的时候最后一位,为了省两句代码,那几个语句顺序写反覆盖的乱七八糟 vector头部插入(a.begin(),被插入的数) 如果 ...

  3. 稀疏矩阵 part 4

    ▶ 各种稀疏矩阵数据结构下 y(n,1) = A(n,m) * x(m,1) 的实现,GPU版本 ● MAT 乘法 __global__ void dotGPU(const MAT *a, const ...

  4. Storm实现实时大数据分析(storm介绍,与Hadoop比较,)

    一.storm与Hadoop对比 Hadoop: 全量数据处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大.自动容错等优点,在海量数据处理上得到了广泛的 ...

  5. 字节码操作JAVAssist

    字节码操作Javassist 字节码:字节码是设计被用来将代码高效的传送给多种软件平台.硬件平台,字节码的设计也实现了Java的平台无关性,字节码比机器码更抽象,它通常被认为是包含了一个可执行文件的二 ...

  6. [SQL][MS SQL]ID自增列从1开始重新排序

    数据库中把ID自增长重置成1: 一般做法:(太麻烦) 复制表数据->删除原表.新建一张表->粘贴: 新方法: 数据库中:新建查询->复制.粘贴一下代码->修改表名,执行即可(先 ...

  7. 如何用jquery获取form表单的值

    $(function(){ $('.btn').click(function(){ alert($('#form').serialize()); }) }) 这样就获取到了 #form的值.

  8. sql中的不常见查询

    1.对于CROSS APPLY 和 OUTER APPLY 的应用: CROSS APPLY 类似于INNER JOIN 但是,可以规定对于满足条件的数据需要关联几行,应用场景: 每个零件把第一个工单 ...

  9. 深入理解Java虚拟机之JVM垃圾回收随笔

    1.对象已经死亡? 1.1引用计数法:给对象中添加一个引用计数器,每当有一个地方引用他时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器都为0的对象就是不可能再被使用 的.但是它很难解决 ...

  10. Vue note 2

    1.异步加载组件 一般单页面的缺点是首屏加载比较慢,因为首屏会把所有所需静态资源全部加载,对于中大型项目来说这样可能不是很合理.初步采用异步组件的方式,配合webpack,组件内部可以采用: comp ...