js保存xls及打印……mysql导出xls

MySQL 要导出成 excel 文件很简单,执行类似这样的命令: 

select * from 某个表 into outfile  'd:/文件名.xls'; 

上述命令你在服务器上执行,就导在服务器 D: 盘,若在客户端命令行方式执行,就导在客户端 D 

:盘 ,若在客户端通过 POST 方式执行,则导在服务器 D:盘。能导成功的大前提是你有登录权限 

,要有 select 权限,而且还要有 file 权限,如果没有 file 权限,你将无法执行 select 

....into outfile 和 load data infile .... 之类的操作。 


至于加一个按钮,点击一下提示保存为 excel 文件,我想你可能指的是在网页上吧?如果在网页上 

,对 MySQL 的操作一般被屏蔽在后面了,一般都是通过服务器端脚本语言(PHP,JSP,ASP之类的)去 

操作 MySQL,下面分别以 PHP 和JavaScript 为例,将数据库查询结果保存为 xls 的方法(两种办 

法我都实践过,是可行的): 

1.PHP 方法: 
调用 header() 函数,参数如下: 
header("content-type:application/msexcel"); 
header("content-disposition:filename=file001.xls"); 

这两个函数放在 PHP 文件中执行数据库查询操作之前。 

一般,数据库查询操作结束后,可通过 echo(),printf() 之类的函数将查询结果展示给客户端,如 

果在执行数据库操作之前加了上述两行,则客户端将不再显示结果,而是出现一个下载并保存为 xls 

的对话框,路径与文件名可以自由选择。按钮<input type=button ...> 或链接<a href=...>你可以 

放在第 1 页,将其指向第2页,第1页用来向客户端显示结果,第2页(PHP文件)放上上述两行,然 

后写上连接数据库并执行与第1页相同的查询操作的代码。这样你在第1页上点击此链接就会跳出一个 

下载并保存为 xls 的对话框,保存的内容就是你在第 1 页上看到的查询结果,保存格式为 xls,保 

存后你可用 Excel 打开它进行操作。 


PHP 是服务器端脚本,用上述办法实际上同样的数据结果从服务端向客户端传了两次,第一次用来显 

示,第二次用来打包成 xls 文件供下载。 

2.JavaScript 方法: 

首先在数据所在页面的 <head> 部分定义一个 JS 函数: 

<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> 

然后在展示数据的 <table> 之前放上 <div id=div_id>,在</table>之后放上</div>。 

然后在下面做一个按钮: 
<input type="button" value="保存为 Excel 文件" οnclick=xSaveAsxls 

(document.all.div_id.innerHTML,'filename.xls')> 

这样就行了,这个显示为“保存为 Excel 文件”,你点击它就弹出一个保存对话框,保存的内容就 

是数据结果集,格式为 xls 。 

JS 是浏览器端脚本,用这种办法将显示结果保存为 xls ,其数据从服务器向客户端只传一次,节省 

传输资源。 


另外还有一种办法就是考虑将查询结果集由 PHP 传递给 JS 数组变量,由其带到客户端,然后调用 

FileObjectSystem 进行操作,这只是个思路,我没去实践过。 

不当之处请指正。

 

 

 

 

 

有没有人做过打印页面的js?我想打印一个页面的table,但不打印table之外的东西,有什么好办法推荐?

function doPrint() { 
var newWin = window.open('about:blank','','');
var titleHTML = document.getElementById("doctitle").innerHTML;
newWin.document.write(titleHTML);
newWin.document.location.reload();
newWin.print();
newWin.close();
}

<html>
       <div id="doctitle">
            <table width="100%" border="0" ..... 
       </div>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值