常用的用PHP讀取EXCEL的方法有以下三種,各自有各自的優(yōu)缺點。個人推薦用第三種方法,因為它可以跨平臺使用。\x0d\x0a\x0d\x0a1. 以.csv格式讀取\x0d\x0a\x0d\x0a將.xls轉換成.csv的文本格式,然后再用PHP分析這個文件,和PHP分析文本沒有什么區(qū)別。\x0d\x0a\x0d\x0a優(yōu)點:跨平臺,效率比較高、可以讀寫。\x0d\x0a\x0d\x0a缺點:只能直接使用.csv的文件,如果經常接受.xls二進制文件的話需要手工轉換,不能自動化。一個文件只有一個SHEET。\x0d\x0a\x0d\x0aPHP有自帶的分析.csv函數(shù):fgetcsv\x0d\x0a\x0d\x0aarray fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )\x0d\x0a\x0d\x0ahandle 一個由 fopen()、popen() 或 fsockopen() 產生的有效文件指針。\x0d\x0a\x0d\x0alength (可選)必須大于 CVS 文件內最長的一行。在 PHP 5 中該參數(shù)是可選的。如果忽略(在 PHP 5.0.4 以后的版本中設為 0)該參數(shù)的話,那么長度就沒有限制,不過可能會影響執(zhí)行效率。\x0d\x0a\x0d\x0adelimiter (可選)設置字段分界符(只允許一個字符),默認值為逗號。\x0d\x0a\x0d\x0aenclosure (可選)設置字段環(huán)繞符(只允許一個字符),默認值為雙引號。該參數(shù)是在 PHP 4.3.0 中添加的。 和 fgets() 類似,只除了 fgetcsv() 解析讀入的行并找出 CSV 格式的字段然后返回一個包含這些字段的數(shù)組。\x0d\x0a\x0d\x0afgetcsv() 出錯時返回 FALSE,包括碰到文件結束時。\x0d\x0a\x0d\x0a注意: CSV 文件中的空行將被返回為一個包含有單個 null 字段的數(shù)組,不會被當成錯誤。\x0d\x0a\x0d\x0a當然也可以自己手動分析字符串。\x0d\x0a\x0d\x0a還可以利用fputcsv函數(shù)將行格式化為 CSV 并寫入文件指針。\x0d\x0a\x0d\x0a2. ODBC鏈接數(shù)據(jù)源\x0d\x0a\x0d\x0a優(yōu)點:支持多種格式,cvs, xls等。支持讀寫,使用標準SQL語言,和SQLSERVER、MYSQL數(shù)據(jù)庫幾乎完全一樣。\x0d\x0a\x0d\x0a缺點:值支持windows服務器\x0d\x0a\x0d\x0a3. PHP自定義類\x0d\x0a\x0d\x0a優(yōu)點:跨平臺。某些類支持寫操作。支持.xls二進制文件\x0d\x0a\x0d\x0a常用的類有phpExcelReader、PHPExcel。其中后者支持讀寫,但是需要php5.2以上版本。\x0d\x0a\x0d\x0aphpExcelReader是專門用來讀取文件的。返回一個數(shù)組,包含表格的所有內容。\x0d\x0a\x0d\x0a該 class 使用的方法可以參考網站下載回來的壓縮檔中的 example.php。\x0d\x0a\x0d\x0a不過我下載回來的 (版本 2009-03-30),有兩點要注意:\x0d\x0a\x0d\x0areader.php 中的下面這行要修改\x0d\x0a\x0d\x0a將 require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;\x0d\x0a\x0d\x0a改為 require_once ‘oleread.inc’;\x0d\x0a\x0d\x0aexample.php 中\(zhòng)x0d\x0a\x0d\x0a修改 $data-setOutputEncoding(’CP1251′);\x0d\x0a\x0d\x0a為 $data-setOutputEncoding(’CP936′);\x0d\x0a\x0d\x0aexample2.php 中\(zhòng)x0d\x0a\x0d\x0a修改 nl2br(htmlentities($data-sheets[$sheet]['cells'][$row][$col]));\x0d\x0a\x0d\x0a為 $table_output[$sheet] .= nl2br(htmlspecialchars($data-sheets[$sheet]['cells'][$row][$col]));\x0d\x0a\x0d\x0a不然中文會有問題。\x0d\x0a\x0d\x0a繁體的話可以修改為CP950、日文是CP932,具體可參考codepage說明。\x0d\x0a\x0d\x0a修改 $data-read(’jxlrwtest.xls’) 為自己的 excel 文件名,zip 檔中附的 jxlrwtest.xls 應該是壞了。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網綜合服務,包含不限于做網站、網站設計、中原網絡推廣、小程序制作、中原網絡營銷、中原企業(yè)策劃、中原品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供中原建站搭建服務,24小時服務熱線:18980820575,官方網址:www.cdcxhl.com
PHPExcel
PHPExcel?是用來操作Office Excel 文檔的一個PHP類庫,它基于微軟的OpenXML標準和PHP語言??梢允褂盟鼇碜x取、寫入不同格式的電子表格,如 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函數(shù)返回一個
二維數(shù)組
$exceArray?=?readExcel($path);
//創(chuàng)建一個讀取
excel函數(shù)
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文件,返回一個
二維數(shù)組
$dataArray?=?$Sheets-getSheet(0)-
toArray();
return?$dataArray;
}
由于你沒給出具體的頁面,我只能給你一個通用的獲取方法,有些頁面可能有多個表格,這時需要你多加一些參數(shù)進行過濾了,其實個人首推正則匹配獲取,示例代碼:
$url?=?"";????//換成你自己需要獲取的頁面地址
$content?=?file_get_contents($url);
preg_matches("/table([.\n]+)\/table/",$contents,$matches);
echo?$matches[0];?//即為表單內容
參考代碼如下:
?php
// 1.引用ExcelReader類文件
require_once 'Excel/reader.php';
// 2.實例化讀取Excel的類
$data = new Spreadsheet_Excel_Reader();
// 3.設置輸出編碼
$data-setOutputEncoding('utf-8');
// 4.讀取指定的excel
$data-read('test.xls');
// 5.循環(huán)輸出每一行數(shù)據(jù),這里讀取的是Excel的第一個Sheet表格
// sheets[0]['numRows']代表行數(shù)
// sheets[0]['numCols']代表列數(shù)
for ($i = 1; $i = $data-sheets[0]['numRows']; $i++) { // 遍歷行
for ($j = 1; $j = $data-sheets[0]['numCols']; $j++) { // 遍歷列
echo "\"".$data-sheets[0]['cells'][$i][$j]."\",";
}
echo "\n";
}
?
?php
$link=mysql_connect('localhost','用戶名','密碼')or?die("數(shù)據(jù)庫連接失敗");//連接數(shù)據(jù)庫
mysql_select_db('數(shù)據(jù)庫名',$link);//選擇數(shù)據(jù)庫
mysql_query("set?names?utf8");//設置編碼格式
$q="select?*?from?"數(shù)據(jù)表";//設置查詢指令
$result=mysql_query($q);//執(zhí)行查詢
while($row=mysql_fetch_assoc($result))//將result結果集中查詢結果取出一條
{?echo??返回到HTML;?}
?
html界面使用ajax的成功返回值,再渲染在界面里就行了