国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php讀取excel文件(.csv)實例介紹

2024-05-04 21:49:08
字體:
來源:轉載
供稿:網友

csv文件是一種純文本文件,但利用excel文件打開可以當作excel文件使用,下面我來總結幾個常用的讀取excel的php實例.

PHP有自帶的分析.csv函數:fgetcsv

array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )

handle 一個由 fopen()、popen() 或 fsockopen() 產生的有效文件指針。

length (可選)必須大于 CVS 文件內最長的一行。在 PHP 5 中該參數是可選的。如果忽略(在 PHP 5.0.4 以后的版本中設為 0)該參數的話,那么長度就沒有限制,不過可能會影響執行效率。

delimiter (可選)設置字段分界符(只允許一個字符),默認值為逗號。

enclosure (可選)設置字段環繞符(只允許一個字符),默認值為雙引號。該參數是在 PHP 4.3.0 中添加的。 和 fgets() 類似,只除了 fgetcsv() 解析讀入的行并找出 CSV 格式的字段然后返回一個包含這些字段的數組。

fgetcsv() 出錯時返回 FALSE,包括碰到文件結束時。

注意:CSV 文件中的空行將被返回為一個包含有單個 null 字段的數組,不會被當成錯誤.

例,代碼如下:

  1. <?php  
  2. $row = 1;  
  3. $handle = fopen("test.csv","r");  
  4. while ($data = fgetcsv($handle, 1000, ",")) {  
  5.  $num = count($data);  
  6.  echo "  
  7.  $num fields in line $row:n";  
  8.  $row++;  
  9.  for ($c=0; $c < $num$c++) {  
  10.  echo $data[$c] . "n";  
  11.  }  
  12. }  
  13. fclose($handle);  
  14. ?> 

例2,在百度統計和站長工具使用過程中會涉及到很多csv文件,比如我們下載百度站長工具的404統計數據,直接可以使用以下php腳本來讀取csv文件然后更新提交。

php讀取excel文件(.csv)參考代碼:

  1. <?php   
  2. function getCSVdata($filename)   
  3. {   
  4.     $row = 1;//第一行開始   
  5.     if(($handle = fopen($filename"r")) !== false)    
  6.     {   
  7.         while(($dataSrc = fgetcsv($handle)) !== false)    
  8.         {   
  9.             $num = count($dataSrc);   
  10.             for ($c=0; $c < $num$c++)//列 column    
  11.             {   
  12.                 if($row === 1)//第一行作為字段    
  13.                 {   
  14.                     $dataName[] = $dataSrc[$c];//字段名稱   
  15.                 }   
  16.                 else   
  17.                 {   
  18.                     foreach ($dataName as $k=>$v)   
  19.                     {   
  20.                         if($k == $c)//對應的字段   
  21.                         {   
  22.                             $data[$v] = $dataSrc[$c];   
  23.                         }   
  24.                     }   
  25.                 }   
  26.             }   
  27.             if(!emptyempty($data))   
  28.             {   
  29.                  $dataRtn[] = $data;   
  30.                  unset($data);   
  31.             }   
  32.             $row++;   
  33.         }   
  34.         fclose($handle);   
  35.         return $dataRtn;   
  36.     }   
  37. }   
  38.    
  39. $aData = getCSVdata('all_m.survivalescaperooms.com .csv');   
  40.  
  41. foreach ($aData as $k=>$v ){ 
  42. echo "http://".$v['a']."<br>"
  43. ?> 

PHP自定義類

優點:跨平臺,某些類支持寫操作,支持.xls二進制文件,常用的類有phpExcelReader、PHPExcel,其中后者支持讀寫,但是需要php5.2以上版本.

phpExcelReader是專門用來讀取文件的,返回一個數組,包含表格的所有內容,該 class 使用的方法可以參考網站下載回來的壓縮檔中的 example.php.

例3.php數據導入導出之excel

上傳cvs并導入到數據庫中,測試成功,部分代碼不規范,如PHP_SELF那里要改寫成:$_SERVER["PHP_SELF"] )

PHP實例代碼如下:

  1. <?php 
  2. $fname = $_FILES['MyFile']['name']; 
  3. $do = copy($_FILES['MyFile']['tmp_name'],$fname); 
  4. if ($do
  5. echo"導入數據成功 
  6. "; 
  7. else { 
  8. echo ""
  9. ?> 
  10. <form ENCTYPE="multipart/form-data" ACTION="<?php echo"".$PHP_SELF.""; ?>" METHOD="POST"
  11. 導入CVS數據 <input NAME="MyFile" TYPE="file"> <input VALUE="提交" TYPE="submit"
  12.  
  13. </form> 
  14. <? 
  15. error_reporting(0); 
  16. //導入CSV格式的文件 
  17. $connect=mysql_connect("localhost","a0530093319","123456"or die("could not connect to database"); 
  18. mysql_select_db("a0530093319",$connector die (mysql_error()); 
  19. $fname = $_FILES['MyFile']['name']; 
  20. $handle=fopen("$fname","r"); 
  21. while($data=fgetcsv($handle,10000,",")) 
  22. {//開源代碼Vevb.com 
  23. $q="insert into test (code,name,date) values ('$data[0]','$data[1]','$data[2]')"
  24. mysql_query($qor die (mysql_error()); 
  25. fclose($handle); 
  26. ?> 

用php將數據庫導出成excel,測試完全成功,PHP代碼如下:

  1. <?php 
  2. $DB_Server = m.survivalescaperooms.com;//這里是你的數據連接 
  3. $DB_Username = "a0530093319"
  4. $DB_Password = "123456"
  5. $DB_DBName = "a0530093319"
  6. $DB_TBLName = "member"
  7. $savename = date("YmjHis"); 
  8. $Connect = @mysql_connect($DB_Server$DB_Username$DB_Password
  9. or die("Couldn't connect."); 
  10. mysql_query("Set Names 'gb2312'"); 
  11. $file_type = "vnd.ms-excel"
  12. $file_ending = "xls"
  13. header("Content-Type: application/$file_type"); 
  14. header("Content-Disposition: attachment; filename=".$savename.".$file_ending"); 
  15. header("Pragma: no-cache"); 
  16. header("Expires: 0"); 
  17. $now_date = date("Y-m-j H:i:s"); 
  18. $title = "數據庫名:$DB_DBName,數據表:$DB_TBLName,備份日期:$now_date"
  19. $sql = "Select * from $DB_TBLName"
  20. $ALT_Db = @mysql_select_db($DB_DBName$Connect
  21. or die("Couldn't select database"); 
  22. $result = @mysql_query($sql,$Connect
  23. or die(mysql_error()); 
  24. echo("$title "); 
  25. $sep = " "
  26. for ($i = 0; $i < mysql_num_fields($result); $i++) { 
  27. echo mysql_field_name($result,$i) . " "
  28. print(" "); 
  29. $i = 0; 
  30. while($row = mysql_fetch_row($result)) { 
  31. $schema_insert = ""
  32. for($j=0; $j<mysql_num_fields($result);$j++) { 
  33. if(!isset($row[$j])) 
  34. $schema_insert .= "NULL".$sep
  35. elseif ($row[$j] != ""
  36. $schema_insert .= "$row[$j]".$sep
  37. else 
  38. $schema_insert .= "".$sep
  39. $schema_insert = str_replace($sep."$"""$schema_insert); 
  40. $schema_insert .= " "
  41. print(trim($schema_insert)); 
  42. print " "
  43. $i++; 
  44. return (true); 
  45. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清原| 专栏| 和平县| 景泰县| 四子王旗| 英吉沙县| 唐海县| 晋江市| 宁明县| 兰州市| 鹿泉市| 井陉县| 泾川县| 西乌| 察哈| 栖霞市| 宁强县| 东方市| 阜平县| 长春市| 古田县| 连平县| 昭觉县| 繁峙县| 甘谷县| 阿克苏市| 萍乡市| 巴彦县| 黄浦区| 余姚市| 灵宝市| 洛阳市| 奎屯市| 青河县| 兴化市| 鄢陵县| 海口市| 醴陵市| 旬阳县| 大邑县| 阿瓦提县|