PHPExcel 导出表格 不知道好不好用

Posted 神靖希希

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHPExcel 导出表格 不知道好不好用相关的知识,希望对你有一定的参考价值。

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;
}
?>
View Code

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 导出表格 不知道好不好用的主要内容,如果未能解决你的问题,请参考以下文章

phpexcel导入excel表格,导入后自动为科学计数法5.1115E+14

PHPExcel-1.8.1导入导出Excel表格

PHP导出excel信息表格

PHPExcel导入导出数据时候,部分小数会乱码。例如有一个30变成了29.:,在导入和导出的时候

PHPExcel导入导出常用方法总结

PHP 用PHPExcel往数据库导入大量数据