使用原生php讀寫excel檔案
阿新 • • 發佈:2018-12-13
原文地址:https://www.cnblogs.com/wujuntian/p/6696592.html
方法1:直接在js程式碼中使用window.open()開啟php介面的url,即可將php生成的excel檔案下載下來。
$mysqli = mysqli_connect('localhost', 'root', '123456', 'test'); $sql = 'select * from country'; $res = mysqli_query($mysqli, $sql); header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=country.xls"); echo "code\t"; echo "name\t"; echo "population\t\n"; if(mysqli_num_rows($res) > 0) { while($row = mysqli_fetch_array($res)) { echo $row['code']."\t"; echo $row['name']."\t"; echo $row['population']."\t\n"; } }
方法2:php介面中先把生成的excel檔案儲存在伺服器中,然後把檔案路徑返回給js,js再使用window.open()開啟檔案路徑即可下載。
php介面程式碼如下:
$mysqli = mysqli_connect('localhost', 'root', '123456', 'test'); $sql = 'select * from country'; $res = mysqli_query($mysqli, $sql); $file = fopen('./country.xls', 'w'); fwrite($file, "code\tname\tpopulation\t\n"); if(mysqli_num_rows($res) > 0) { while($row = mysqli_fetch_array($res)) { fwrite($file, $row['code']."\t".$row['name']."\t".$row['population']."\t\n");//這裡寫得不好,應該把所有檔案內容組裝到一個字串中然後一次性寫入檔案。 } } fclose($file); echo 'http://www.jtw.com/....../country.xls';//這裡返回檔案路徑給js
如果有需要,還可以使用原生php對excel檔案內容進行讀取操作,這主要用於需要將excel檔案中的資料匯入到資料庫中的情況。
程式碼如下:(這裡僅展示將檔案資料讀取到一個數組中)
$path = './country.xls'; $file = fopen($path, 'r'); //標題行讀取(第一行) $row = fgets($file); $row = explode("\t", $row); $title = array(); foreach($row as $k => $v) { $title[$k] = str_replace("\n", '', $v); } //內容讀取 $data = array(); $count = 0; while(!feof($file)) { $row = fgets($file); $row = explode("\t", $row); if(!$row[0]) continue;//去除最後一行 foreach($title as $k => $v) { $data[$count][$title[$k]] = $row[$k]; } $count ++; } fclose($file); echo '<pre>'; print_r($data);