關於原生php實現excel檔案讀寫的方法

來源:互聯網
上載者:User
這篇文章主要介紹了原生php實現excel檔案讀寫的方法,結合執行個體形式分析了採用原生php針對Excel進行讀寫操作的相關實現方法與操作注意事項,需要的朋友可以參考下

本文執行個體分析了原生php實現excel檔案讀寫的方法。分享給大家供大家參考,具體如下:

最近在工作中遇到一個需求,需要將資料庫中的資料匯出到excel檔案中,並下載excel檔案。因為以前沒做過,所以就百度了一下,網上說的大多是使用PHPExcel類來操作excel檔案,這還要去下載這個類才能使用,而我只想使用原生的php,不想那麼麻煩,好在也有網友說到關於原生php產生excel檔案的方法,其實很簡單,下面把我結合網上資料自己實踐的代碼分享一下。

一般我們這種導資料的操作都是通過使用者在網頁頁面上點擊某個按鈕觸發相應js方法,然後請求php介面來實現的,所以主要有兩種方法來完成這種需求。

方法1:直接在js代碼中使用window.open()開啟php介面的url,即可將php產生的excel檔案下載下來。

php介面代碼如下:

$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

兩種方法很類似,都能實現將資料庫中的資料匯出到excel檔案中並下載檔案,最終檔案如下:

如果有需要,還可以使用原生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);

不過,使用原生php產生的excel檔案,存在一個問題,就是每次編輯檔案之後儲存檔案的時候總是會出現如下的問題:

也不知道是什麼原因,大概是產生的檔案本身存在一些問題吧。。。

而且使用原生php對產生的excel檔案進行讀取的時候會出現中文亂碼等一些奇葩情況。所以,使用原生php產生excel檔案最好僅在某種情況下使用:只是單純地將資料從資料庫匯出到檔案中方便查看,無需對檔案進行修改,也無需對檔案進行讀取。這種情況使用原生php來產生excel足以滿足需求,免去使用第三方類庫來操作excel的麻煩。不過,若是產生之後的檔案還有修改儲存、讀取資料的需求,那還是老老實實使用phpexcel等第三方類庫來進行讀寫操作吧,可以避免很多讓人糾結的問題。

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.