首先需要去官网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. Maven 下添加oracle11g的包 报Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0

    Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0 原因:Oracle 的ojdbc.jar是收费的,所以maven的中央仓库中没有这个资源,只能通过配 ...

  2. Flutter环境搭建

    本文介绍mac上搭建Flutter环境 1.Flutter官方提供中国地区镜像地址:https://github.com/flutter/flutter/wiki/Using-Flutter-in-C ...

  3. Delphi中Inputbox 和Inputquery 函数的使用

    原文转自:http://blog.csdn.net/zengcong2013/article/details/18355959 inputbox的返回值是,你在输入框中输入的文字.而inputquer ...

  4. Swift用户通知授权

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIAppli ...

  5. Python第8天

    zip() 拉链方法 max(字典) 默认比较字典的key,不同类型的数据不能比较,只要可以被for迭代即可 利用zip与max(字典)共同使用 ord() — chr()    ascii码表数字与 ...

  6. flask sqlchemy 多对多的自引用关系定义

    多对多的定义可以使用关联表,或者重新定义一个模型,通过模型定义多对多的自引用在flask web开发书里有讲到,这里主要演示用关联表定义的方法. from flask_sqlalchemy impor ...

  7. splash介绍及安装_mac

    一.splash介绍 Splash是一个Javascript渲染服务.它是一个实现了HTTP API的轻量级浏览器,基于Python3和Twisted引擎,可以异步处理任务,并发性能好. 二.spla ...

  8. R数据导入导出(一): read.table()和read.csv()的区别

    之前也参考过一些资料,虽然是这么简单的两个buildin,还是仔细对比了一下,我有两张txt,都是从cube中导出的,就意味着每一列的列数是不一样的.R语言官方文档中有这样一句话不知道大家注意到了没有 ...

  9. 吴裕雄 python 机器学习——岭回归

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model from s ...

  10. 大数据入门到精通16--hive 的条件语句和聚合函数

    一.条件表达 case when ... then when .... then ... when ... then ...end select film_id,rpad(title,20," ...