這篇文章主要介紹了原生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 class="brush:php;toolbar:false">'; print_r($data);
不過,使用原生php產生的excel文件,存在一個問題,就是每次編輯文件之後保存文件的時候總是會出現如下截圖的問題:
也不知道是什麼原因,大概是生成的文件本身存在一些問題吧。 。 。
而且使用原生php對產生的excel檔案進行讀取的時候會出現中文亂碼等一些奇葩情況。所以,使用原生php產生excel檔案最好只在某種情況下使用:只是單純地將資料從資料庫匯出到檔案方便查看,無需對檔案進行修改,也無需對檔案進行讀取。這種情況使用原生php來產生excel足以滿足需求,免去使用第三方類別函式庫來操作excel的麻煩。不過,若是產生之後的檔案還有修改儲存、讀取資料的需求,那還是老實使用phpexcel等第三方類別函式庫來進行讀寫操作吧,可以避免很多讓人糾結的問題。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關建議:
#
以上是關於原生php實作excel檔案讀寫的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境