Excel文件上傳是一種廣泛使用的功能,在企業(yè)內部、學校教育等很多場合都需要用到。PHP是一種非常強大的編程語言,它的開源特性讓開發(fā)者可以擴展各種功能,其中包括文件上傳。下面,我們將探討如何使用PHP來實現Excel文件上傳的功能。
準備上傳表單
首先我們需要準備一個上傳表單,以接收用戶上傳的Excel文件。我們可以在HTML中使用form標簽來構建一個表單,并使用input標簽的type屬性設置為file,以打開文件選擇器進行文件選擇:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="excel_file"><br/> <input type="submit" name="submit" value="上傳"> </form>
這里我們注意三個屬性:
- form標簽的enctype屬性必須被設置為multipart/form-data,這是因為文件數據需要以二進制形式進行傳輸
- input標簽的type屬性為file,用于打開文件選擇器
- input標簽的name屬性要與后臺接收時的表單名稱一致,在此為excel_file
處理上傳的文件
接下來,我們需要編寫代碼來處理上傳的文件(即處理form數據的post請求)。請先參閱PHP文檔中關于$_FILES全局變量和move_uploaded_file函數的相關知識。下面是一個實現上傳Excel文件的PHP代碼:
if(isset($_POST['submit'])){ $filename = $_FILES['excel_file']['name']; $tempname = $_FILES['excel_file']['tmp_name']; $folder = "uploads/"; move_uploaded_file($tempname, $folder.$filename); echo "上傳成功"; }
在此代碼中,我們首先使用isset()函數來判斷表單是否已提交,當用戶點擊上傳按鈕時,該代碼段開始執(zhí)行。我們首先提取所上傳文件的實際名稱和臨時文件名。這里的臨時文件名是PHP中內置的,用于在緩存區(qū)域中存儲上傳的Excel文件。然后我們將Excel文件移動到指定的文件夾中,這里為/uploads。最后輸出上傳成功的消息。
上傳Excel文件后的處理
上傳Excel文件到服務器后,我們需要根據實際需要來處理這些文件。下面,我們將討論一些用于處理Excel文件的主要庫。我們使用PHPExcel,因為它是一種簡單、易于使用的庫。
首先,我們需要根據上傳文件的名稱來判斷文件的類型。由于PHPExcel僅支持.xlsx和.xls兩種格式,我們必須檢查上傳的文件類型是否為這些。
$file_extension = strtolower(pathinfo($filename,PATHINFO_EXTENSION)); if($file_extension == 'xlsx' || $file_extension == 'xls') { require_once "PHPExcel/Classes/PHPExcel.php"; require_once "PHPExcel/Classes/PHPExcel/IOFactory.php"; $inputfilename = 'uploads/'.$filename; $objReader = PHPExcel_IOFactory::createReader('Excel2007'); if(!$objReader->canRead($inputfilename)){ $objReader = PHPExcel_IOFactory::createReader('Excel5'); } $objPHPExcel = $objReader->load($inputfilename); $worksheet = $objPHPExcel->getActiveSheet(); $lastRow = $worksheet->getHighestRow(); $lastColumn = $worksheet->getHighestColumn(); $lastColumn++; for($row = 1; $row<= $lastRow; $row++){ for($column = 'A'; $column != $lastColumn; $column++){ $value = $worksheet->getCell($column.$row)->getValue(); echo $value."\t"; } echo "
"; } } else{ echo "不支持的文件類型"; }
在此示例中,我們使用了PHP的pathinfo()函數,從上傳的文件名中獲取文件擴展名,然后根據它判斷文件類型是否正確。
如果文件的類型匹配,我們就需要加載PHPExcel庫,并根據PHPExcel_IOFactory類創(chuàng)建一個Excel文件讀取對象。然后,我們使用load()方法從硬盤讀取上傳的Excel文件,并將其轉換為PHPExcel對象。我們最終獲得了PHPExcel的工作表,并確定了數據的最后行和最后列。接下來,我們進入一個行和列循環(huán),輸出Excel表格中的單元格數據。
結論
在這篇文章中,我們已經介紹了如何使用PHP來上傳Excel文件、如何處理Excel文件以及如何輸出Excel表格中的數據。同時,我們還熟悉了PHPExcel這個簡單易用的類庫。因此,您現在可以將這些知識應用到您自己的項目中并實現您的需求。希望本文對您有所幫助!