php上傳解析excel(php接收上傳的文件)

本文目錄一覽:

利用php導入excel文件

【步驟1】在前台html頁面進行上傳文件

form method=”post” action=”php文件” enctype=”multipart/form-data” 

h3導入Excel表:/h3input  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 ( ‘上傳失敗’ );      }

    /*

*對上傳的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;

    }

}

php怎麼讀取excel 文件數據並輸出

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或以下版本,

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;

}

php 讀取excel

第一個是PHPExcelReader,另外一個是PHPExcel。

PHPExcelReader比較輕量級,僅支持Excel的讀取,實際上就是一個Reader。但是可惜的是不能夠支持Excel 2007的格式(.xlsx)。

PHPExcel比較強大,能夠將內存中的數據輸出成Excel文件,同時還能夠對Excel做各種操作,下面主要介紹下如何使用PHPExcel進行Excel 2007格式(.xlsx)文件的讀取。

下載PHPExcel後保存到自己的類文件目錄中,然後使用以下代碼可以打開Excel 2007(xlsx)格式的文件:

1

2

3

4

5

6

require_once ‘/libs/PHPExcel-1.8.0/Classes/PHPExcel.php’; //修改為自己的目錄

echo ‘pTEST PHPExcel 1.8.0: read xlsx file/p’;

$objReader = PHPExcel_IOFactory::createReaderForFile($filename);

$objPHPExcel = $objReader-load($filename);

$objPHPExcel-setActiveSheetIndex(1);

$date = $objPHPExcel-getActiveSheet()-getCell(‘A16’)-getValue();

輸出$date變數就能夠看到文件中的內容了。PHPExcel使用PHPExcel_IOFactory這個類來自動匹配所上傳的文件類型,當然我們也可以自己制定要解析的文件類型。之後通過load方法,將PHP文件載入到objPHPExcel對象中。如果Excel文件有多個Sheet,可以通過setActiveSheetIndex來設置當前活動的Sheet。如何通過Sheet名來獲得當前Sheet我還不知道,如果有知道的可以站內我。

需要注意的是,對於Excel中的日期格式,PHPExcel讀出來的是不是日期類型,需要我們使用以下方法來進行日期類型轉換。

echo date(“Y-m-d H:i:s”,PHPExcel_Shared_Date::ExcelToPHP($date));

下面的代碼顯示了如何遍歷顯示Excel的內容:

1 table id=”table_id”

2 ?php

3 $objWorksheet = $objPHPExcel-getActiveSheet();

4 $i = 0;

5 foreach($objWorksheet-getRowIterator() as $row){

6 ?

7 tr

8 ?php

9 $cellIterator = $row-getCellIterator();

10 $cellIterator-setIterateOnlyExistingCells(false);

11

12 if( $i == 0 ){

13 echo ‘thead’;

14 }

15 foreach($cellIterator as $cell){

16

17 echo ‘td’ . $cell-getValue() . ‘/td’;

18

19 }

20 if( $i == 0 ){

21 echo ‘/thead’;

22 }

23 $i++;

24 ?

25 /tr

26 ?php

27 }

28 ?

29 /table

php上傳excel文件,如何讀取文件中的信息?

告訴你一個思路,

簡單歸納如下三個部分即可實現 .

////存儲的部分

?

if($_FILE[文件名])

{

$destFilename=指定目錄/文件名;

copy($_FILE[文件名],$destFilename);

}

?

?

//php讀出部分,

這裡可以有多個.如果是圖片文件的,可以直接使用HTML的IMG src=相對URI圖片路徑標記

//如果是其它如WORD/EXCEL/PDF這類的.你就要用一個IFRAME src=文件 高/寬設定

?

//////////上傳的部分

form method=”POST”

input type=file name=文件變數

input type=submit

/form

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239084.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:14
下一篇 2024-12-12 12:14

相關推薦

發表回復

登錄後才能評論