MySQL實(shí)現(xiàn)導(dǎo)出excel的方法分析
本文實(shí)例講述了MySQL實(shí)現(xiàn)導(dǎo)出excel的方法。分享給大家供大家參考,具體如下:
MySQL 要導(dǎo)出成 excel 文件很簡單,執(zhí)行類似這樣的命令:
select * from 某個(gè)表 into outfile 'd:/文件名.xls';
上述命令你在服務(wù)器上執(zhí)行,就導(dǎo)在服務(wù)器 D: 盤,若在客戶端命令行方式執(zhí)行,就導(dǎo)在客戶端 D:盤 ,若在客戶端通過 POST 方式執(zhí)行,則導(dǎo)在服務(wù)器 D:盤。能導(dǎo)成功的大前提是你有登錄權(quán)限,要有 select 權(quán)限,而且還要有 file 權(quán)限,如果沒有 file 權(quán)限,你將無法執(zhí)行 select....into outfile 和 load data infile .... 之類的操作。
至于加一個(gè)按鈕,點(diǎn)擊一下提示保存為 excel 文件,我想你可能指的是在網(wǎng)頁上吧?如果在網(wǎng)頁上,對 MySQL 的操作一般被屏蔽在后面了,一般都是通過服務(wù)器端腳本語言(PHP,JSP,ASP之類的)去操作 MySQL,下面分別以 PHP 和JavaScript 為例,將數(shù)據(jù)庫查詢結(jié)果保存為 xls 的方法(兩種辦法我都實(shí)踐過,是可行的):
1.PHP 方法:
調(diào)用 header() 函數(shù),參數(shù)如下:
header("content-type:application/msexcel");
header("content-disposition:filename=file001.xls");
這兩個(gè)函數(shù)放在 PHP 文件中執(zhí)行數(shù)據(jù)庫查詢操作之前。
一般,數(shù)據(jù)庫查詢操作結(jié)束后,可通過 echo(),printf() 之類的函數(shù)將查詢結(jié)果展示給客戶端,如果在執(zhí)行數(shù)據(jù)庫操作之前加了上述兩行,則客戶端將不再顯示結(jié)果,而是出現(xiàn)一個(gè)下載并保存為 xls的對話框,路徑與文件名可以自由選擇。按鈕<input type=button ...> 或鏈接<a href=...>你可以放在第 1 頁,將其指向第2頁,第1頁用來向客戶端顯示結(jié)果,第2頁(PHP文件)放上上述兩行,然后寫上連接數(shù)據(jù)庫并執(zhí)行與第1頁相同的查詢操作的代碼。這樣你在第1頁上點(diǎn)擊此鏈接就會(huì)跳出一個(gè)下載并保存為 xls 的對話框,保存的內(nèi)容就是你在第 1 頁上看到的查詢結(jié)果,保存格式為 xls,保存后你可用 Excel 打開它進(jìn)行操作。
PHP 是服務(wù)器端腳本,用上述辦法實(shí)際上同樣的數(shù)據(jù)結(jié)果從服務(wù)端向客戶端傳了兩次,第一次用來顯示,第二次用來打包成 xls 文件供下載。
2.JavaScript 方法:
首先在數(shù)據(jù)所在頁面的 <head> 部分定義一個(gè) JS 函數(shù):
<head>
<script language="javascript">
function xSaveAsxls( xResult , xFileName ){
var ow=window.open();
with(ow){
document.write(Result);
document.execCommand('Saveas', true, xFileName);
close();
}
}
</script>
</head>
然后在展示數(shù)據(jù)的 <table> 之前放上 <div id=div_id>,在</table>之后放上</div>。
然后在下面做一個(gè)按鈕:
<input type="button" value="保存為 Excel 文件" onclick=xSaveAsxls (document.all.div_id.innerHTML,'filename.xls')>
這樣就行了,這個(gè)顯示為“保存為 Excel 文件”,你點(diǎn)擊它就彈出一個(gè)保存對話框,保存的內(nèi)容就是數(shù)據(jù)結(jié)果集,格式為 xls 。
JS 是瀏覽器端腳本,用這種辦法將顯示結(jié)果保存為 xls ,其數(shù)據(jù)從服務(wù)器向客戶端只傳一次,節(jié)省傳輸資源。
另外還有一種辦法就是考慮將查詢結(jié)果集由 PHP 傳遞給 JS 數(shù)組變量,由其帶到客戶端,然后調(diào)用FileObjectSystem 進(jìn)行操作,這只是個(gè)思路,我沒去實(shí)踐過。
不當(dāng)之處請指正。
如果有亂碼問題:可以使用如下語句
select convert(dname using gb2312),email from d_dealerinfo into outfile 'd:/d.xls';
其中dname 是中文的
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過程技巧大全》、《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計(jì)有所幫助。
- 詳解 linux mysqldump 導(dǎo)出數(shù)據(jù)庫、數(shù)據(jù)、表結(jié)構(gòu)
- Navicat for MySQL導(dǎo)出表結(jié)構(gòu)腳本的簡單方法
- mysql mysqldump只導(dǎo)出表結(jié)構(gòu)或只導(dǎo)出數(shù)據(jù)的實(shí)現(xiàn)方法
- 淺談mysql導(dǎo)出表數(shù)據(jù)到excel關(guān)于datetime的格式問題
- python3實(shí)現(xiàn)mysql導(dǎo)出excel的方法
- mysql 導(dǎo)出select語句結(jié)果到excel文件遇到問題及解決方法
- Mysql中文亂碼以及導(dǎo)出為sql語句和Excel問題解決方法[圖文]
- PHP導(dǎo)出MySQL數(shù)據(jù)到Excel文件(fputcsv)
- mysql如何將表結(jié)構(gòu)導(dǎo)出到excel
相關(guān)文章
MySQL中LIKE運(yùn)算符的多種使用方式及示例演示
無論是簡單的模式匹配還是復(fù)雜的模式匹配,LIKE運(yùn)算符都提供了強(qiáng)大的功能來滿足不同的匹配需求,通過本文的介紹,我們詳細(xì)了解了在MySQL數(shù)據(jù)庫中使用LIKE運(yùn)算符進(jìn)行模糊匹配的多種方式,感興趣的朋友跟隨小編一起看看吧2023-07-07
MySQL通過ibd文件恢復(fù)數(shù)據(jù)的操作過程
通常,在InnoDB存儲(chǔ)引擎下,一個(gè)表由三部分組成:數(shù)據(jù)字典(.frm文件)、表空間(.ibd文件)和日志文件,其中,.frm文件存儲(chǔ)了表的定義,.ibd文件存儲(chǔ)了表的數(shù)據(jù)和索引,本文給大家記錄一次MySQL通過ibd文件恢復(fù)數(shù)據(jù)的操作過程,需要的朋友可以參考下2024-10-10
防止MySQL重復(fù)插入數(shù)據(jù)的三種方法
在MySQL進(jìn)行數(shù)據(jù)插入操作時(shí),總是會(huì)考慮是否會(huì)插入重復(fù)數(shù)據(jù),之前的操作都是先根據(jù)主鍵或者唯一約束條件進(jìn)行查詢,有就進(jìn)行更新沒有就進(jìn)行插入。代碼反復(fù)效率低下。2020-09-09
php中如何將圖片儲(chǔ)存在數(shù)據(jù)庫里
php中如何將圖片儲(chǔ)存在數(shù)據(jù)庫里...2007-03-03
mysql數(shù)據(jù)庫添加用戶及分配權(quán)限具體實(shí)現(xiàn)
這篇文章主要介紹了mysql數(shù)據(jù)庫添加用戶及分配權(quán)限的方法,需要的朋友可以參考下2014-02-02
MySQL事務(wù)實(shí)現(xiàn)可重復(fù)讀
MySQL數(shù)據(jù)庫的默認(rèn)事務(wù)隔離級別是可重復(fù)讀,本文主要介紹了MySQL事務(wù)實(shí)現(xiàn)可重復(fù)讀,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
MySql使用skip-name-resolve解決外網(wǎng)鏈接客戶端過慢問題
在騰訊云上面搭建的mysql使用開發(fā)的電腦上navicat進(jìn)行訪問時(shí)總是特別的慢,原來是Mysql會(huì)對請求的地址進(jìn)行域名解析,開發(fā)的電腦并沒有域名,所以會(huì)導(dǎo)致特別的慢,下面通過本文給大家分享MySql使用skip-name-resolve解決外網(wǎng)鏈接客戶端過慢問題2017-07-07

