本文目錄一覽:
利用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-hant/n/239084.html