首先需要去官网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. nginx访问统计

    1).根据访问IP统计UV awk '{print $1}'  access.log|sort | uniq -c |wc -l 2).统计访问URL统计PV awk '{print $7}' acc ...

  2. mysql-day1

    -- 数据库的操作 -- 链接数据库 mysql -uroot -p mysql -uroot -pmysql -- 退出数据库 exit/quit/ctrl+d -- sql语句最后需要有分号;结尾 ...

  3. redis hashmap数据结构分析

    说明一点:redis的hash中每一个key都是一个单独的hash表,field是hash表中的key,value是hash表中的value: //redis中hash数据结构为:key-field- ...

  4. C语言--第01次作业

    分支.顺序结构 1.本章学习总结 1.1思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 本周学习了分支.顺序结构,学到的大部分都在思维导图介绍了,不懂的地方例如有switch的运 ...

  5. OrderBy排序和IComparer的使用

    https://www.cnblogs.com/May-day/p/7490334.html 一,OrderBy排序在MDSN中有两种使用方法,如下 1>第一种方法的使用,就是根据某个字段排序, ...

  6. mybatis-plus报org.apache.ibatis.binding.BindingException分析【转载】

    这个问题整整纠结了我四个多小时,心好累啊...不废话... 背景:Spring整合Mybatis 报错:org.apache.ibatis.binding.BindingException: Inva ...

  7. [Sw] Swoole-4.2.9 可以尝试愉快应用 Swoole 协程

    大家知道 Swoole 提供了方便于服务器.网络编程的模式,简化了多进程编程. 这直接让 PHP 的运行很容易变成常驻内存的 Server 程序,执行效率上有了数倍的提升. 但是这一切还没有让人足够兴 ...

  8. Redis安全以及备份还原

    启用密码 配置密码,配置文件中添加节点requirepass,如下root即passwordrequirepass root可以在登陆的时候用-a 指定password登陆,也可以不指定,登陆之后使用 ...

  9. 排序算法(Gif动图演示)

    冒牌排序(BubbleSort) 冒泡排序是一种比较简单的排序算法,它循环走过需要排序的元素,依次比较相邻的两个元素,如果顺序错误就交换,直至没有元素交换,完成排序. 若对n个人进行排序,我们需要n- ...

  10. 模拟Http请求的几种常用方式

    HttpURLConnection HttpClient JSOUP Nutch 后续补充用法……