常用的用PHP讀取EXCEL的方法有以下三種,各自有各自的優(yōu)缺點。個人推薦用第三種方法,因為它可以跨平臺使用。\x0d\x0a\x0d\x0a1. 以.csv格式讀取\x0d\x0a\x0d\x0a將.xls轉(zhuǎn)換成.csv的文本格式,然后再用PHP分析這個文件,和PHP分析文本沒有什么區(qū)別。\x0d\x0a\x0d\x0a優(yōu)點:跨平臺,效率比較高、可以讀寫。\x0d\x0a\x0d\x0a缺點:只能直接使用.csv的文件,如果經(jīng)常接受.xls二進(jìn)制文件的話需要手工轉(zhuǎn)換,不能自動化。一個文件只有一個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() 產(chǎn)生的有效文件指針。\x0d\x0a\x0d\x0alength (可選)必須大于 CVS 文件內(nèi)最長的一行。在 PHP 5 中該參數(shù)是可選的穗亮爛。如果忽略(在 PHP 5.0.4 以后的版本中鍵頃設(shè)為 0)該參數(shù)的話,那么長度就沒有限制,不過可能會影響執(zhí)行效率。\x0d\x0a\x0d\x0adelimiter (可選)設(shè)置字段分界符(只允許一個字符),默認(rèn)值為逗號。\x0d\x0a\x0d\x0aenclosure (可選)設(shè)置字段環(huán)繞符(只允許一個字符),默認(rèn)值為雙引號。該參數(shù)是在 PHP 4.3.0 中添加的。 和 fgets() 類似,只除了 fgetcsv() 解析讀入的行并找出 CSV 格式的字段然后返回一個包含這些字段的數(shù)組。\x0d\x0a\x0d\x0afgetcsv() 出錯時返回 FALSE,包括碰到文件結(jié)束時。\x0d\x0a\x0d\x0a注意: CSV 文件中的空行將被返回為一個包含有單個 null 字段的數(shù)組,不會被當(dāng)成錯誤。\x0d\x0a\x0d\x0a當(dāng)然也可以自己手動分析字符串。\x0d\x0a\x0d\x0a還可以利用fputcsv函數(shù)將行格式化為 CSV 并寫入文件指針。\x0d\x0a\x0d\x0a2. ODBC鏈接數(shù)據(jù)源\x0d\x0a\x0d\x0a優(yōu)點:支持多種格式,cvs, xls等。支持讀寫,使用標(biāo)準(zhǔn)SQL語言,和SQLSERVER、MYSQL數(shù)據(jù)庫幾乎完全一樣。\x0d\x0a\x0d\x0a缺點:值支持windows服務(wù)器\x0d\x0a\x0d\x0a3. PHP自定義類\x0d\x0a\x0d\x0a優(yōu)點:跨平臺。某些類支持寫操作。支持.xls二進(jìn)制文件\x0d\x0a\x0d\x0a常用的類有phpExcelReader、PHPExcel。其中后者支持讀寫,但是需要php5.2以上版本。\x0d\x0a\x0d\x0aphpExcelReader是專門用來讀取文件的。返回一個數(shù)組,包含表格的所有內(nèi)容。\x0d\x0a\x0d\x0a該 class 使用的方法可以參考網(wǎng)站下載回來的壓縮檔猜漏中的 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 應(yīng)該是壞了。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供羅城企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為羅城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
講的復(fù)雜了??!\x0d\x0a你先在一個完整版的PHPExcel之后解壓,在“Examples”目錄下會找到一大堆例子,根據(jù)你的要求這個“01simple-download-xlsx.php”文件就可以了!\x0d\x0a注:你先保持“01simple-download-xlsx.php”文件所在的目錄位置不要變,旦侍咐測試好了,再改變名,移到別的地方,地方變了的話,文件里的 “require_once dirname(__FILE__) . '/../Classes/PHPExcel.php';”的所在位置也要變!\x0d\x0a我們要改動代碼很少,如下:\x0d\x0a// Add some data\x0d\x0a$objPHPExcel-setActiveSheetIndex(0)\x0d\x0a-setCellValue('A1', 'Hello')\x0d\x0a-setCellValue('B2', 'world!')\x0d\x0a-setCellValue('C1', 'Hello')\x0d\x0a-setCellValue('D2', 'world!');\x0d\x0a\x0d\x0a// Miscellaneous glyphs, UTF-8\x0d\x0a$objPHPExcel-setActiveSheetIndex(0)\x0d\x0a-setCellValue('A4', 'Miscellaneous glyphs')\x0d\x0a-setCellValue('A5', 'éàèùaê?????ü???ü?');\x0d\x0a、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、\x0d\x0a直接用的我的替換\x0d\x0a$objPHPExcel-setActiveSheetIndex(0)//這個就是現(xiàn)實導(dǎo)出的表第一行,有幾列是根據(jù)你的那張表有幾列!\x0d\x0a-setCellValue('A1', '單號')\x0d\x0a-setCellValue('B1', '標(biāo)題')\x0d\x0a-setCellValue('C1', '內(nèi)容')\x0d\x0a-setCellValue('D1', '序列')\x0d\x0a-setCellValue('E1', '數(shù)字');\x0d\x0a//下面實現(xiàn)的談吵就是建立數(shù)據(jù)庫連接,直接到表,你的連接數(shù)據(jù)庫、表、字段應(yīng)該與我的不一樣,你可以參考\x0d\x0a$conn=@mysql_connect("localhost","root","root") or die("數(shù)據(jù)庫服務(wù)器連接錯誤".mysql_error());//模純連接mysql數(shù)據(jù)庫\x0d\x0amysql_select_db("temp",$conn) or die("數(shù)據(jù)庫訪問錯誤".mysql_error());//數(shù)據(jù)庫\x0d\x0amysql_query("set character set gb2312");\x0d\x0amysql_query("set names gb2312");\x0d\x0a\x0d\x0a$sqlgroups="select * from test ";//查詢這一張表的條件\x0d\x0a$resultgroups=mysql_query($sqlgroups);\x0d\x0a$numrows=mysql_num_rows($resultgroups);\x0d\x0aif ($numrows0)\x0d\x0a{\x0d\x0a$count=1;\x0d\x0awhile($data=mysql_fetch_array($resultgroups))\x0d\x0a{\x0d\x0a$count+=1;\x0d\x0a$l1="A"."$count";\x0d\x0a$l2="B"."$count";\x0d\x0a$l3="C"."$count";\x0d\x0a$l4="D"."$count";\x0d\x0a$l5="E"."$count";\x0d\x0a$objPHPExcel-setActiveSheetIndex(0) \x0d\x0a-setCellValue($l1, $data['id'])//這就是你要導(dǎo)出表的字段、與對應(yīng)的名稱\x0d\x0a-setCellValue($l2, $data['title'])\x0d\x0a-setCellValue($l3, $data['content'])\x0d\x0a-setCellValue($l4, $data['sn'])\x0d\x0a-setCellValue($l5, $data['num']);\x0d\x0a}\x0d\x0a}
1、首先創(chuàng)建一個html文件,編寫上基本的代碼,在head頭部中引入jquery路徑,用于調(diào)用其中封裝的方法。
2、編寫一個簡單的表格樣式,并編寫一個執(zhí)行按鈕,用于id,此時需要給table賦予頌巖一個id屬性。
3、打開瀏覽器,看一下表格效果,目前是有兩行單元格,有兩列數(shù)據(jù)。
3、編寫js代碼實現(xiàn)點擊效果,先寫一個按鈕單擊事件,用click方法實現(xiàn)。
4、在click()方法中編寫表格增加一行的效果,先編寫一行表格的html代碼,轉(zhuǎn)為字符串,然后用append( )方法將字符串追加到表格當(dāng)中。
5、回到瀏覽器界面,點擊click按鈕,會發(fā)現(xiàn)自動多了一行表野悄御格內(nèi)容,點擊按鈕添運納加一行表格就實現(xiàn)了。
1、建立一個數(shù)組,取名為$ShuZu,舉例數(shù)組的內(nèi)容是學(xué)生的信息,包括姓名、性別和年齡。
$ShuZu = array
(
array("姓名","性別","年齡"),
array("張三","男",13),
array("里斯","女",12),
array("王五","男",15)
);
2、建立一個變量,用來存儲需要祥銷態(tài)顯示的表格。
$BiaoGe = "";
給¥BiaoGe賦初始值,
$BiaoGe = $BiaoGe."table ";
3、構(gòu)建外循環(huán),取出數(shù)組$ShuZu中的行數(shù)。
for ($i=0; $icount($ShuZu); $i++)
{
$BiaoGe = $BiaoGe. "tr";
$BiaoGe = $BiaoGe. "/tr";
}
4、構(gòu)建內(nèi)循環(huán),取出每行中的每斗核一個列。
for ($i=0; $icount($ShuZu); $i++)
{
$BiaoGe = $BiaoGe. "tr";
for ($j=0;$jcount($ShuZu[$i]);$j++)
{
$BiaoGe = $BiaoGe. "td".$ShuZu[$i][$j]."/td";
}
$BiaoGe = $BiaoGe. "/tr";
}
5、加入表謹(jǐn)源示表格結(jié)尾的html標(biāo)記。
$BiaoGe = $BiaoGe. "/table";
6、使用echo 方法顯示表格。
echo? $BiaoGe;
7、查看運行結(jié)果,這樣,表格就制作完成了。