导入Excel表:

乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>php</em>怎么<em>读取excel</em> 文件数据并

<em>php</em>怎么<em>读取excel</em> 文件数据并

作者:乔山办公网日期:

返回目录:excel表格制作


第一,在前台html页面进行上传文件:如:
复制代码代码如7a64e59b9ee7ad94336下:

<form method="post" action="php文件"enctype="multipart/form-data">
<h3>导入Excel表:</h3><input type="file" name="file_stu" />
<input type="submit" value="导入"/>
</form>

第二,在对应的php文件进行文件的处理
复制代码代码如下:

if (! empty ( $_FILES ['file_stu'] ['name'] ))
{
$tmp_file = $_FILES ['file_stu'] ['tmp_name'];
$file_types = explode ( ".", $_FILES ['file_stu']['name'] );
$file_type = $file_types [count ( $file_types ) - 1];
/*判别是不是.xls文件,判别是不是excel文件*/
if (strtolower ( $file_type ) !="xls")
{
$this->error ( '不是Excel文件,重新上传' );
}
/*设置上传路径*/
$savePath = SITE_PATH . '/public/upfile/Excel/';
/*以时间来命名上传的文件*/
$str = date ( 'Ymdhis' );
$file_name = $str . "." . $file_type;
/*是否上传成功*/
if (! copy ( $tmp_file, $savePath . $file_name ))
{
$this->error ( '上传失败' );
}
/*
*对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中
注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
*/
$res = Service ( 'ExcelToArray' )->read ( $savePath . $file_name );
/*
重要代码解决Thinkphp M、D方法不能调用的问题
如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码
*/
//spl_autoload_register ( array ('Think', 'autoload' ) );
/*对生成的数组进行数据库的写入*/
foreach ( $res as $k => $v )
{
if ($k != 0)
{
$data ['uid'] = $v[0];
$data ['password']= sha1 ( '111111' );
$data ['email'] =$v [1];
$data ['uname'] = $v [3];
$data ['institute'] = $v [4];
$result = M ( 'user' )->add( $data );
if (! $result)
{
$this->error ( '导入数据库失败' );
}
}
}
}

第三:ExcelToArrary类,用来引用phpExcel并处理Excel数据的
复制代码代码如下:

class ExcelToArrary extends Service{
public function __construct() {
/*导入phpExcel核心类 注意:你的路径跟我不一样就不能直接复制*/
include_once('./Excel/PHPExcel.php');
}
/**
* 读取excel $filename 路径文件名$encode 返回数据的编码默认为utf8
*以下基本都不要修改
*/
public function read($filename,$encode='utf-8'){
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow =$objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex;$col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
}
}
return $excelData;
}
}

PHPExcel

PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。

  • PHP读取示例代码

//获取上传的excel临时文件
$path = $_FILES["file"]["tmp_name"];
//将临时文件移动当前目录,可自定义存储位置
 
move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]);
//将获取在服务器中的Excel文件,此处为上传文件名
$path = $_FILES["file"]["name"];
//调用readExcel函数返回一个
二维数组
$exceArray = readExcel($path);
 
//创建一个读取
excel函数
function readExcel($path){
        //引入PHPExcel类库
    include 'Classes/PHPExcel.php';            
    include 'Classes/PHPExcel/IOFactory.php';
 
    $type = 'Excel5';//设置为Excel5代表支持2003或以下版e68a84e8a2ade799bee5baa6e997aee7ad94333本,
Excel2007代表2007版
    $xlsReader = \PHPExcel_IOFactory::createReader($type);  
    $xlsReader->setReadDataOnly(true);
    $xlsReader->setLoadSheetsOnly(true);
    $Sheets = $xlsReader->load($path);
    //开始读取上传到服务器中的Excel文件,返回一个
二维数组
    $dataArray = $Sheets->getSheet(0)->
toArray();
    return $dataArray;
}

【步骤1】在前台html页面进行上传文件

<form method="post" action="php文件" enctype="multipart/form-data"> 
<h3>导入Excel表:</h3><input  type="file" name="file_stu" />
<input type="submit"  value="导入" />
</form>

【步骤2】在对应的php文件进行文件的处理

 if (! empty ( $_FILES ['file_stu'] ['name'] ))
 {    $tmp_file = $_FILES ['file_stu'] ['tmp_name'];    $file_types = explode ( ".", $_FILES ['file_stu'] ['name'] );    $file_type = $file_types [count ( $file_types ) - 1];
     /*判别是不是.xls文件,判别是不是excel文件*/     if (strtolower ( $file_type ) != "xls")                  {          $this->error ( '不是Excel文件,重新上传' );     }
    /*设置上传路径*/     $savePath = SITE_PATH . '/public/upfile/Excel/';
    /*以时间来命名上传的文件*/     $str = date ( 'Ymdhis' );      $file_name = $str . "." . $file_type;
     /*是否上传成功*/     if (! copy ( $tmp_file, $savePath . $file_name ))       {          $this->error ( '上传失败e79fa5e98193e4b893e5b19e331' );      }
    /*

       *对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中

      注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入

    */  $res = Service ( 'ExcelToArray' )->read ( $savePath . $file_name );
   /*

        重要代码 解决Thinkphp M、D方法不能调用的问题  

        如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码

    */

 //spl_autoload_register ( array ('Think', 'autoload' ) );

   /*对生成的数组进行数据库的写入*/
  

foreach ( $res as $k => $v )    {       if ($k != 0)       {           $data ['uid'] = $v [0];           $data ['password'] = sha1 ( '111111' );           $data ['email'] = $v [1];
           $data ['uname'] = $v [3];
          $data ['institute'] = $v [4];         $result = M ( 'user' )->add ( $data );         if (! $result)          {              $this->error ( '导入数据库失败' );          }      }   }
}
【步骤3】ExcelToArrary类,用来引用phpExcel并处理Excel数据的
class ExcelToArrary extends Service{
 public function __construct() {
     /*导入phpExcel核心类    注意 :你的路径跟我不一样就不能直接复制*/     include_once('./Excel/PHPExcel.php'); }
/**

* 读取excel $filename 路径文件名 $encode 返回数据的编码 默认为utf8

*以下基本都不要修改

*/

public function read($filename,$encode='utf-8'){
          $objReader = PHPExcel_IOFactory::createReader('Excel5');
          $objReader->setReadDataOnly(true);
          $objPHPExcel = $objReader->load($filename);
          $objWorksheet = $objPHPExcel->getActiveSheet();
    $highestRow = $objWorksheet->getHighestRow();     $highestColumn = $objWorksheet->getHighestColumn();       $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);       $excelData = array();     for ($row = 1; $row <= $highestRow; $row++) {         for ($col = 0; $col < $highestColumnIndex; $col++) {                  $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();           }          }         return $excelData;
    }

 }



在网页上传文件并点击打开excel、word文档:
<?php
if($submit && $testfile <> "none ") {
$path= "/home/httpd/html/ "; //绝对路径,注意Linux和Windows下面的格636f70797a64362式,windows格式为:c:\\apache2\\htdocs\\
$filename=$testfile_name;
if (!@copy($testfile,$path.$filename)) {
echo "复制文件失败... \n ";
exit();
}
@unlink($testfile);
echo "文件上传成功!地址为: <a href=\ "$filename\ "> 下载 </a> ";
exit;
}
?>
<form action= " <?php echo $PHP_SELF;?> " method= "post " enctype= "multipart/form-data ">
<input name= "testfile " type= "file " size=20 enctype= "multipart/form-data ">
<input type=submit name=submit value= "开始上传 ">
</form>

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网