PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/classname

时间:2022-12-31 14:43:39

php利用PHPExcel类导出导入Excel用法

来源:   时间:2013-09-05 19:26:56   阅读数:

分享到: 16

[导读] PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介绍了)。导出Excel用法 设置环境变量

PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介绍了)。

导出Excel用法

//设置环境变量(新增PHPExcel)

 代码如下 复制代码

set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR .

get_include_path()); 
//注:在yii中,也可以直接Yii::import(“application.lib.PHPExcel.*”); 
 
//引入PHPExcel相关文件 
require_once "PHPExcel.php"; 
require_once 'PHPExcel/IOFactory.php'; 
require_once 'PHPExcel/Writer/Excel5.php';

//把要导出的内容放到表格

 代码如下 复制代码

//新建

$resultPHPExcel = new PHPExcel(); 
//设置参数

//设值

$resultPHPExcel->getActiveSheet()->setCellValue('A1', '季度'); 
$resultPHPExcel->getActiveSheet()->setCellValue('B1', '名称'); 
$resultPHPExcel->getActiveSheet()->setCellValue('C1', '数量'); 
$i = 2; 
foreach($data as $item){ 
$resultPHPExcel->getActiveSheet()->setCellValue('A' . $i, $item['quarter']); 
$resultPHPExcel->getActiveSheet()->setCellValue('B' . $i, $item['name']); 
$resultPHPExcel->getActiveSheet()->setCellValue('C' . $i, $item['number']); 
$i ++; 
}

设置导出参数

 代码如下 复制代码

//设置导出文件名

$outputFileName = 'total.xls';

$xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);

//ob_start(); ob_flush();

header("Content-Type: application/force-download");

header("Content-Type: application/octet-stream");

header("Content-Type: application/download");

header('Content-Disposition:inline;filename="'.$outputFileName.'"');

header("Content-Transfer-Encoding: binary");

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Pragma: no-cache");

$xlsWriter->save( "php://output" );

输出有错。

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

 代码如下 复制代码

$finalFileName = (Yii::app()->basePath.'/runtime/'.time().'.xls';

$xlsWriter->save($finalFileName);

echo file_get_contents($finalFileName);

//file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文

件读入一个字符串。

导入Excel用法

 代码如下 复制代码

<?
if($_POST['leadExcel'] == "true")
{
    $filename = $_FILES['inputExcel']['name'];
    $tmp_name = $_FILES['inputExcel']['tmp_name'];
    $msg = uploadFile($filename,$tmp_name);
    echo $msg;
}

//导入Excel文件
function uploadFile($file,$filetempname)
{
    //自己设置的上传文件存放路径
    $filePath = 'upFile/';
    $str = "";  
    //下面的路径按照你PHPExcel的路径来修改
    require_once '../PHPExcel/PHPExcel.php';
    require_once '../PHPExcel/PHPExcel/IOFactory.php';
    require_once '../PHPExcel/PHPExcel/Reader/Excel5.php';

//注意设置时区
    $time=date("y-m-d-H-i-s");//去当前上传的时间
    //获取上传文件的扩展名
    $extend=strrchr ($file,'.');
    //上传后的文件名
    $name=$time.$extend;
    $uploadfile=$filePath.$name;//上传后的文件名地址
    //move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。
    $result=move_uploaded_file($filetempname,$uploadfile);//假如上传到当前目录下
    //echo $result;
    if($result) //如果上传文件成功,就执行导入excel操作
    {
        include "conn.php";
        $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
        $objPHPExcel = $objReader->load($uploadfile);
        $sheet = $objPHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow();           //取得总行数
        $highestColumn = $sheet->getHighestColumn(); //取得总列数
       
        /* 第一种方法

//循环读取excel文件,读取一条,插入一条
        for($j=1;$j<=$highestRow;$j++)                        //从第一行开始读取数据
        {
            for($k='A';$k<=$highestColumn;$k++)            //从A列读取数据
            {
                //
                这种方法简单,但有不妥,以''合并为数组,再分割为字段值插入到数据库
                实测在excel中,如果某单元格的值包含了导入的数据会为空       
                //
                $str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'';//读取单元格
            }
            //echo $str; die();
            //explode:函数把字符串分割为数组。
            $strs = explode("",$str);
            $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES (
            '{$strs[0]}',
            '{$strs[1]}',
            '{$strs[2]}',
            '{$strs[3]}',
            '{$strs[4]}')";
            //die($sql);
            if(!mysql_query($sql))
            {
                return false;
                echo 'sql语句有误';
            }
            $str = "";
        } 
        unlink($uploadfile); //删除上传的excel文件
        $msg = "导入成功!";
        */

/* 第二种方法*/
        $objWorksheet = $objPHPExcel->getActiveSheet();
        $highestRow = $objWorksheet->getHighestRow();
        echo 'highestRow='.$highestRow;
        echo "<br>";
        $highestColumn = $objWorksheet->getHighestColumn();
        $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数
        echo 'highestColumnIndex='.$highestColumnIndex;
        echo "<br>";
        $headtitle=array();
        for ($row = 1;$row <= $highestRow;$row++)
        {
            $strs=array();
            //注意highestColumnIndex的列数索引从0开始
            for ($col = 0;$col < $highestColumnIndex;$col++)
            {
                $strs[$col] =$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
            }   
            $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES (
            '{$strs[0]}',
            '{$strs[1]}',
            '{$strs[2]}',
            '{$strs[3]}',
            '{$strs[4]}')";
            //die($sql);
            if(!mysql_query($sql))
            {
                return false;
                echo 'sql语句有误';
            }
        }
    }
    else
    {
       $msg = "导入失败!";
    }
    return $msg;
}
?>

HTML网页代码

 代码如下 复制代码

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="leadExcel" value="true">
    <table align="center" width="90%" border="0">
    <tr>
       <td>
        <input type="file" name="inputExcel"><input type="submit" value="导入数据">
       </td>
    </tr>
    </table>
</form>

PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/classname的更多相关文章

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

    使用PHPExcel导入导出excel格式文件  作者:zccst  因为导出使用较多,以下是导出实现过程.  第一步,将PHPExcel的源码拷贝到项目的lib下  文件包含:PHPExcel.ph ...

  2. thinkphp5 使用PHPExcel 导入导出

    首先下载PHPExcel类.网上很多,自行下载. 然后把文件放到vendor文件里面. 一般引用vendor里面的类或者插件用vendor(); 里面加载的就是vendor文件,然后想要加载哪个文件, ...

  3. 黄聪:超实用的PHPExcel&lbrack;导入&rsqb;&lbrack;导出&rsqb;实现方法总结

    首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可. 1.PHPExcel导出方法实现过程 /* ...

  4. phpexcel 导入导出

    导出excel /** * 以下是使用示例,对于以 //// 开头的行是不同的可选方式,请根据实际需要 * 打开对应行的注释. * 如果使用 Excel5 ,输出的内容应该是GBK编码. */ //r ...

  5. phpexcel使用说明5----ThinkPHP&plus;PHPExcel&lbrack;导入&rsqb;&lbrack;导出&rsqb;实现方法

    转自:http://www.thinkphp.cn/code/403.html实现步骤: 注意:phpexcel必须是1.78版本的,不能用1.8以上的 一:去官网http://phpexcel.co ...

  6. phpcms 用phpexcel导入导出excel

    html <form method="post" action="?m=content&c=content&a=public_add_excel&q ...

  7. phpexcel导入导出

    先下载类文件,将类文件放到lib下,然后到入口文件定义一个新的的路径,以便引入文件.    <?php namespace app\index\controller; use think\Con ...

  8. 【PHP】使用phpoffice&sol;phpexcel导入导出数据

    本例以thinkphp5.1为例 包地址: https://packagist.org/packages/phpoffice/phpexcel 使用: composer require phpoffi ...

  9. phpexcel 导入导出excel表格

    phpexcel中文实用手册 转载:http://www.cnblogs.com/freespider/p/3284828.html 下面是总结的几个使用方法 include 'PHPExcel.ph ...

随机推荐

  1. HTML常用标签总结

    HTML 的常用标签总结 <font size="字体大小1-7" color="red或0xff00ff" face="字体类型(楷体等)&q ...

  2. Sqoop2搭建及使用

    1. 下载并安装配置Sqoop [需要的环境:Hadoop,Java] 首先  Hadoop版本2.7.2 20161013 找了篇Sqoop的文章就开撸  结果发现什么1.3,1.9,又有什么Sqo ...

  3. 【转】android适配各种分辨率的问题

    http://blog.csdn.net/r8hzgemq/article/details/8243119   Android设备屏幕的尺寸是各式各样的,如小米是4英寸的,Xoom平板是10英寸:分辨 ...

  4. MyBatis知多少(10)应用程序数据库

    应用程序数据库往往是最小.最简单.也最易于使用的数据库.这种数据库往往是我们这些开发人员通常不介意使用甚至非常乐意使用的.应用程序数据库通常与我们的应用程序处于同一个项目中,两者一齐设计和实现.正是因 ...

  5. TCP&sol;IP笔记 四&period;应用层&lpar;1&rpar;——DNS

    1. DNS DNS(Domain Name System ):域名系统,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机 ...

  6. Linux下Apache服务器并发优化

     Linux/UnixLinux系统下Apache 并发数的优化 Apache Http服务器采用prefork或者是worker两种并发控制模式. preforkMPM 使用多个子进程,每个子进程只 ...

  7. TurnipBit—MicroPython开发板:妥妥拽拽零基础也能玩编程

    可视化编程网站入口:www.turnipbit.com 说到编程.谈到硬件,你也许会想到屌丝逆袭女神的"传奇"故事,也许会浮现出带着眼镜.头发稀少.无精打采的程序猿形象.&quot ...

  8. vue keep-alive 取消某个页面缓存问题

    keep-alive keep-alive是Vue提供的一个抽象组件,用来对组件进行缓存,从而节省性能,由于是一个抽象组件,所以在v页面渲染完毕后不会被渲染成一个DOM元素 <keep-aliv ...

  9. block &comma;GCD&lpar;转)

    原文:http://blog.sina.com.cn/s/blog_45e2b66c01010dhd.html 1.GCD之dispatch queue http://www.cnblogs.com/ ...

  10. Android Volley源码分析及扩展

    转载请标明出处: http://www.cnblogs.com/why168888/p/6681232.html 本文出自:[Edwin博客园] Volley 介绍 Android系统中主要提供了两种 ...