最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用phpExcel實(shí)現(xiàn)Excel數(shù)據(jù)的導(dǎo)入導(dǎo)出(全步驟詳細(xì)解析)

 更新時(shí)間:2013年11月26日 09:42:38   作者:  
本人的這段例程是使用在Thinkphp的開發(fā)框架上,要是使用在其他框架也是同樣的方法,很多人可能不能正確的實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出,問題基本上都是phpExcel的核心類引用路徑出錯(cuò),如果有問題大家務(wù)必要對(duì)路勁是否引用正確進(jìn)行測(cè)試

很多文章都有提到關(guān)于使用phpExcel實(shí)現(xiàn)Excel數(shù)據(jù)的導(dǎo)入導(dǎo)出,大部分文章都差不多,或者就是轉(zhuǎn)載的,都會(huì)出現(xiàn)一些問題,下面是本人研究phpExcel的使用例程總結(jié)出來的使用方法,接下來直接進(jìn)入正題。

首先先說一下,本人的這段例程是使用在Thinkphp的開發(fā)框架上,要是使用在其他框架也是同樣的方法,很多人可能不能正確的實(shí)現(xiàn)Excel的導(dǎo)入導(dǎo)出,問題基本上都是phpExcel的核心類引用路徑出錯(cuò),如果有問題大家務(wù)必要對(duì)路勁是否引用正確進(jìn)行測(cè)試。

(一)導(dǎo)入Excel

第一,在前臺(tái)html頁面進(jìn)行上傳文件:如:

復(fù)制代碼 代碼如下:

<form method="post" action="php文件" enctype="multipart/form-data">
         <h3>導(dǎo)入Excel表:</h3><input  type="file" name="file_stu" />

           <input type="submit"  value="導(dǎo)入" />
</form>


第二,在對(duì)應(yīng)的php文件進(jìn)行文件的處理
復(fù)制代碼 代碼如下:

 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文件,重新上傳' );
     }

    /*設(shè)置上傳路徑*/
     $savePath = SITE_PATH . '/public/upfile/Excel/';

    /*以時(shí)間來命名上傳的文件*/
     $str = date ( 'Ymdhis' );
     $file_name = $str . "." . $file_type;

     /*是否上傳成功*/
     if (! copy ( $tmp_file, $savePath . $file_name ))
      {
          $this->error ( '上傳失敗' );
      }

    /*

       *對(duì)上傳的Excel數(shù)據(jù)進(jìn)行處理生成編程數(shù)據(jù),這個(gè)函數(shù)會(huì)在下面第三步的ExcelToArray類中

      注意:這里調(diào)用執(zhí)行了第三步類里面的read函數(shù),把Excel轉(zhuǎn)化為數(shù)組并返回給$res,再進(jìn)行數(shù)據(jù)庫寫入

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

   /*

        重要代碼 解決Thinkphp M、D方法不能調(diào)用的問題  

        如果在thinkphp中遇到M 、D方法失效時(shí)就加入下面一句代碼

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

   /*對(duì)生成的數(shù)組進(jìn)行數(shù)據(jù)庫的寫入*/
   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 ( '導(dǎo)入數(shù)據(jù)庫失敗' );
          }
      }
   }

}


第三:ExcelToArrary類,用來引用phpExcel并處理Excel數(shù)據(jù)的
復(fù)制代碼 代碼如下:

class ExcelToArrary extends Service{

 public function __construct() {

     /*導(dǎo)入phpExcel核心類    注意 :你的路徑跟我不一樣就不能直接復(fù)制*/
     include_once('./Excel/PHPExcel.php');
 }

/**

* 讀取excel $filename 路徑文件名 $encode 返回?cái)?shù)據(jù)的編碼 默認(rèn)為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;

    }    

 }


第四,以上就是導(dǎo)入的全部?jī)?nèi)容,phpExcel包附在最后。

(二)Excel的導(dǎo)出(相對(duì)于導(dǎo)入簡(jiǎn)單多了)

第一,先查出數(shù)據(jù)庫里面要生成Excel的數(shù)據(jù),如:

$data= M('User')->findAll();   //查出數(shù)據(jù)
$name='Excelfile';    //生成的Excel文件文件名
$res=service('ExcelToArrary')->push($data,$name);

第二,ExcelToArrary類,用來引用phpExcel并處理數(shù)據(jù)的   

復(fù)制代碼 代碼如下:

class ExcelToArrary extends Service{

       public function __construct() {

              /*導(dǎo)入phpExcel核心類    注意 :你的路徑跟我不一樣就不能直接復(fù)制*/
               include_once('./Excel/PHPExcel.php');
       }

     /* 導(dǎo)出excel函數(shù)*/
    public function push($data,$name='Excel'){

          error_reporting(E_ALL);
          date_default_timezone_set('Europe/London');
         $objPHPExcel = new PHPExcel();

        /*以下是一些設(shè)置 ,什么作者  標(biāo)題啊之類的*/
         $objPHPExcel->getProperties()->setCreator("轉(zhuǎn)彎的陽光")
                               ->setLastModifiedBy("轉(zhuǎn)彎的陽光")
                               ->setTitle("數(shù)據(jù)EXCEL導(dǎo)出")
                               ->setSubject("數(shù)據(jù)EXCEL導(dǎo)出")
                               ->setDescription("備份數(shù)據(jù)")
                               ->setKeywords("excel")
                              ->setCategory("result file");
         /*以下就是對(duì)處理Excel里的數(shù)據(jù), 橫著取數(shù)據(jù),主要是這一步,其他基本都不要改*/
        foreach($data as $k => $v){

             $num=$k+1;
             $objPHPExcel->setActiveSheetIndex(0)

                         //Excel的第A列,uid是你查出數(shù)組的鍵值,下面以此類推
                          ->setCellValue('A'.$num, $v['uid'])   
                          ->setCellValue('B'.$num, $v['email'])
                          ->setCellValue('C'.$num, $v['password'])
            }

            $objPHPExcel->getActiveSheet()->setTitle('User');
            $objPHPExcel->setActiveSheetIndex(0);
             header('Content-Type: application/vnd.ms-excel');
             header('Content-Disposition: attachment;filename="'.$name.'.xls"');
             header('Cache-Control: max-age=0');
             $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
             $objWriter->save('php://output');
             exit;
      }


第三,以上就是導(dǎo)出的全部?jī)?nèi)容,phpExcel包附在最后。

相關(guān)文章

  • PHP性能測(cè)試工具xhprof安裝與使用方法詳解

    PHP性能測(cè)試工具xhprof安裝與使用方法詳解

    這篇文章主要介紹了PHP性能測(cè)試工具xhprof安裝與使用方法,簡(jiǎn)單說明了性能測(cè)試工具xhprof的功能并較為詳細(xì)的分析了xhprof安裝與使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • php5中類的學(xué)習(xí)

    php5中類的學(xué)習(xí)

    類的結(jié)構(gòu): 類的內(nèi)部能可能有三種東西,就是常量(constant),屬性(property)和方法(method),功能可以理解成類外部的常量,變量和函數(shù)。
    2008-03-03
  • PHP云打印類完整示例

    PHP云打印類完整示例

    這篇文章主要介紹了PHP云打印類,結(jié)合完整實(shí)例形式分析了php實(shí)現(xiàn)網(wǎng)絡(luò)打印數(shù)據(jù)的搜集與隊(duì)列排序整理及數(shù)據(jù)打印等功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • php實(shí)現(xiàn)的AES加密類定義與用法示例

    php實(shí)現(xiàn)的AES加密類定義與用法示例

    這篇文章主要介紹了php實(shí)現(xiàn)的AES加密類定義與用法,結(jié)合完整實(shí)例形式分析了基于php的AES加密類實(shí)現(xiàn)及使用方法,需要的朋友可以參考下
    2018-01-01
  • php數(shù)組鍵值用法實(shí)例分析

    php數(shù)組鍵值用法實(shí)例分析

    這篇文章主要介紹了php數(shù)組鍵值用法,實(shí)例分析了php數(shù)組中鍵值的系統(tǒng)自動(dòng)分配原理與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 淺談PHP表單提交(POST&GET&URL編/解碼)

    淺談PHP表單提交(POST&GET&URL編/解碼)

    下面小編就為大家?guī)硪黄獪\談PHP表單提交(POST&GET&URL編/解碼)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • 分析PHP的垃圾回收機(jī)制

    分析PHP的垃圾回收機(jī)制

    垃圾回收,簡(jiǎn)稱gc。在說這個(gè)之前先接觸一下內(nèi)存泄露,大概意思就是申請(qǐng)了一塊地兒拉了會(huì)兒屎,拉完后不收拾,那么那塊兒地就算是糟蹋了,地越用越少,最后一地全是屎。說到底一句,用了記得還。一定程度上說,垃圾回收機(jī)制就是用來擦屁股的。
    2021-06-06
  • PHP return語句的另一個(gè)作用

    PHP return語句的另一個(gè)作用

    這篇文章主要介紹了PHP return語句的另一個(gè)作用,在bbPress的代碼中看到的一個(gè)奇葩使用方法,需要的朋友可以參考下
    2014-07-07
  • 總結(jié)PHP中DateTime的常用方法

    總結(jié)PHP中DateTime的常用方法

    本文對(duì)DateTime對(duì)象使用的方法進(jìn)行了一些整理,方便大家查找和翻閱,有需要的可以參考學(xué)習(xí)。
    2016-08-08
  • PHP隨機(jī)生成中文段落示例【測(cè)試網(wǎng)站內(nèi)容時(shí)使用】

    PHP隨機(jī)生成中文段落示例【測(cè)試網(wǎng)站內(nèi)容時(shí)使用】

    這篇文章主要介紹了PHP隨機(jī)生成中文段落,結(jié)合實(shí)例形式分析了PHP針對(duì)隨機(jī)中文段落的編碼轉(zhuǎn)換、生成相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04

最新評(píng)論

通山县| 东城区| 嘉禾县| 时尚| 罗城| 壤塘县| 普定县| 永嘉县| 荥阳市| 股票| 从江县| 赤水市| 宝清县| 临江市| 双城市| 从江县| 东乌珠穆沁旗| 安塞县| 得荣县| 巍山| 汝州市| 伽师县| 遂溪县| 明水县| 潼关县| 林口县| 临澧县| 水富县| 深泽县| 根河市| 白城市| 苍南县| 湘潭市| 黄冈市| 丹凤县| 达尔| 玉环县| 西畴县| 梓潼县| 德阳市| 永城市|