搜索
首页后端开发php教程请教一个PHPExcel问题

最近在做一个项目,需要将查询处理后的表格数据导出到客户端的excel,因为页面表格数据并不是从数据库直接查询得到的,而是经过计算等处理得到。页面有一个按钮(button),onclick事件用ajax向服务器传递一些必要参数,exportexcel.php文件接收参数再查询数据库,并经过处理,最后使用phpexcel导出到excel文件。
因此问题也就来了,经测试发现ajax已经执行,但浏览器不会弹出窗口下载导出的excel文件,一点反应都没有。该如何做才能使用ajax传参数到exportexcel.php,并且能够弹出下载保存窗口?
ajax的代码
function excel(url1,params) 
 {   
                    try{            
       var xhr = new XMLHttpRequest();     
}catch(trymicrosoft){         
try{               
    var xhr = new ActiveXObject("Msxml2.XMLHTTP");        
}catch(othermicrosoft){           
try{              
      var xhr = new ActiveXObject("Microsoft.XMLHTTP");          
}catch(failed){                
  var xhr = false;            
    }         
}
}      
                    var url=url1+"?"+"&r="+Math.random();  
xhr.open("POST",url,true);   //readyState=1   
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");     
xhr.send(params); 
                     xhr.onreadystatechange= function()
{           
//如果等于4,表明交互完毕 ,我们可以取出服务器返回的内容       
    if(xhr.readyState== 4 && xhr.status== 200)
{               

}         
}
}

exportexcel.php代码没有问题,我单独测试过,能弹出下载窗口。
请高手指点下,该怎么做,都困扰我好几天了,一直没想出办法来


回复讨论(解决方案)

返回的文件流被 ajax 接收了,自然不会出现下载啦
你可在收到 ajax 请求后,将 excel 文件生成在服务器中,只返回连接由 ajax 交给 A 或 IFRAME 标记下载

还是不太懂,excel生成在服务器,返回什么链接,ajax又如何使用a标签下载?

如果你不用 ajax,而用连接传递参数,这样会做吗?

function execl的作用是拼接??,提交到url1。
如果可以改成get????,?????就可以下?了

function excel(url1,params){   	window.location = url1+"?"+ url1+"?"+"&r="+Math.random() + params;}


或者使用版主提供的方法。如果excel比?大,用?需要等待excel生成完才可以下?。而用文件流?可以一?下一?生成。
看具?需求了。

改正一下,????。

function excel(url1,params){   	window.location = url1+"?"+"&r="+Math.random() + "&" + params;}

还是不太懂,excel生成在服务器,返回什么链接,ajax又如何使用a标签下载?



例如?求后,需要返回一?execl
phpexecl有?savetofile的方法的,用??,然後?生成一?execl文件。

之後把??文件的路?,例如http://www.example.com/excel/a.xls 返回?js,js 再用window.location ?用下?就可以。

 3楼 楼主的回复:
如果你不用 ajax,而用连接传递参数,这样会做吗?


不会做,还有就是,我运行环境是IE9下,get方法行不通,ie9使用get方法没反应,post方法就能成功运行,这是我测试发现的。

6楼 fdipzone的回复:
例如?求后,需要返回一?execl
phpexecl有?savetofile的方法的,用??,然後?生成一?execl文件。


我试了,phpexcel没有savetofile方法,我的是最新版phpexcel从官网下载的。另外是先试试你在 5楼 说的方法,多谢指导!

function excel(url1,params){        window.location = url1+"?"+"&r="+Math.random() + "&" + params; }

再问个问题,修改excel函数后,在php咋接收参数啊,这样就不使用ajax了吧,那我在php还能post得到参数吗?

是没有 savetofile 方法
但是有 save 方法

function excel(url1,params){                window.location = url1+"?"+params+"&r="+Math.random() ; } 

改用这个方法的确能弹出下载窗口了,但为什么在php使用$_GET['bbsty']接收不到url传递的参数?谁能帮帮我,在线等。。。

function excel(url1,params){                window.location = url1+"?"+params+"&r="+Math.random() ; } 

改用这个方法的确能弹出下载窗口了,但为什么在php使用$_GET['bbsty']接收不到url传递的参数?谁能帮帮我,在线等。。。



function excel(url1,params){                window.location = url1+"?"+params+"&r="+Math.random() ; } 

改用这个方法的确能弹出下载窗口了,但为什么在php使用$_GET['bbsty']接收不到url传递的参数?谁能帮帮我,在线等。。。




你??的??有bbsty??如果其他??可以,??不行,估?是??名?了。

alert(url1+"?"+params+"&r="+Math.random()); 看看有什?。

有的,我在function excel里alert(url1+"?"+params+"&r="+Math.random()); 查看是正常的,

print_r($_REQUEST);输出什么?

有的,我在function excel里alert(url1+"?"+params+"&r="+Math.random()); 查看是正常的,


txtdate 和 dev 用$_GET都能拿到? 只有bbsty不行? ??奇怪

txtdate 、dev 、bbsty用$_GET都不能接收到,print_r($_REQUEST);什么也没有,是很奇怪,就是get接收不到,一个参数都收不到

贴出 ExportToExcel.php 可省去数据库操作和excel生成部分的代码

你的 ajax 是 post 方式发送数据的,显然这个程序不会有读取 get 方式数据的代码

改用这个函数后,就不使用ajax了,button的onclick事件就是function excel(url1,params)

<td width="18%" align="left"><input type="button" name="export" id="export" value="导出" style="cursor:hand" onClick="exportExcel()">          <script language="javascript">             function exportExcel()		    {				var txtdate= document.getElementById("txtdate").value;				var bbsty= document.getElementById("bbsty").value;				var dev= document.getElementById("dev").value;				//定义url				var url="ExportToExcel.php";        				//定义参数        				var params="txtdate="+txtdate+"&bbsty="+bbsty+"&dev="+dev;       				//调用ajax 进行交互				//excel(url,params); 				//alert(url+"?"+params+"&r="+Math.random());				window.location = url+"?"+params+"&r="+Math.random();			}          </script>          </td>

 ExportToExcel.php关键接收代码就几行,剩下代码是操作数据库并处理结果,和生成excel的
$bbsty= $_GET['bbsty'];	$dev= $_GET['dev'];	$days= (int)date('t',strtotime($_GET['txtdate']));  //获取查询月份的总天数	/*echo "<script>alert("+$dev+")</script>";exit;*/

可能我的运行环境有关,get方法使用不了。多谢二位的指导,让我学到很多东西,不过我分不多,见谅了

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP开发:使用 PHPExcel 处理 Excel 文件PHP开发:使用 PHPExcel 处理 Excel 文件Jun 15, 2023 pm 03:45 PM

随着数字化时代的到来,数据已经成为了我们日常生活和工作中最重要的一部分,而Excel文件则成为数据处理的重要工具之一。相信很多PHP开发者也会在工作中经常遇到使用Excel文件进行数据处理和操作的情况。本文将为大家介绍使用PHPExcel库来处理Excel文件的方法和注意事项。什么是PHPExcel?PHPExcel是一个PHP类

完全指南:如何使用php扩展PHPExcel处理Excel文件完全指南:如何使用php扩展PHPExcel处理Excel文件Jul 28, 2023 pm 10:01 PM

完全指南:如何使用PHP扩展PHPExcel处理Excel文件引言:在处理大量数据和统计分析时,Excel文件经常被用作数据存储和交换的一种常见格式。使用PHP扩展PHPExcel,我们可以轻松地读取、写入和修改Excel文件,从而有效地处理Excel数据。本文将介绍如何使用PHP扩展PHPExcel来处理Excel文件,并提供代码示例。一、安装PHPExc

怎么用phpexcel将Excel文件转成CSV文件并打开怎么用phpexcel将Excel文件转成CSV文件并打开Mar 27, 2023 pm 04:16 PM

​PHPEXCEL是一个优秀的PHP读写Excel文件的类库,它提供了非常充分的API,能够让我们使用PHP来读写Excel文件。而有些时候,我们需要将Excel文件转换成CSV文件,在一些场合下使用。那么,本文主要讲述如何使用PHPEXCEL类库将Excel文件转换成CSV文件,并进行打开。

php如何使用PHPExcel处理Excel文件?php如何使用PHPExcel处理Excel文件?Jun 01, 2023 pm 02:01 PM

PHPExcel是一款开源的PHP库,用于处理MicrosoftExcel(.xls和.xlsx)文件。它可以读取、写入和操作Excel文件,提供了丰富的函数和方法。在PHP项目中使用PHPExcel库,可以快速方便地处理Excel文件,实现数据的导入、导出和数据处理等功能。本文将介绍如何使用PHPExcel处理Excel文件。一、安装PHPExcel要使

PHP开发技巧:如何使用PHPExcel和PHPExcel_IOFactory操作MySQL数据库PHP开发技巧:如何使用PHPExcel和PHPExcel_IOFactory操作MySQL数据库Jul 02, 2023 pm 02:28 PM

PHP开发技巧:如何使用PHPExcel和PHPExcel_IOFactory操作MySQL数据库概述:在Web开发中,处理Excel文件是一个常见且重要的任务。PHPExcel是一个功能强大而且易于使用的PHP库,它可以帮助我们读取和写入Excel文件。本文将介绍如何使用PHPExcel和PHPExcel_IOFactory库来操作MySQL数据库。步骤1

使用PHP和PHPExcel创建Excel文件使用PHP和PHPExcel创建Excel文件May 11, 2023 am 08:40 AM

在如今信息快速传递的时代,数据的处理和存储变得越来越重要。而Excel表格的使用是很多人的首选,这是因为Excel表格可以整合各种数据并且可以轻松地进行分析和处理。为了更加高效地完成Excel表格的创建,我们可以使用PHP和PHPExcel这两个强大的工具。在本篇文章中,我们将介绍如何使用PHP和PHPExcel创建Excel文件。1.安装PHPExcel首

PHP开发技巧:如何使用PHPExcel操作MySQL数据库PHP开发技巧:如何使用PHPExcel操作MySQL数据库Jul 02, 2023 pm 12:21 PM

PHP开发技巧:如何使用PHPExcel操作MySQL数据库随着互联网的蓬勃发展,大量的数据被存储于数据库中,并且需要进行导入、导出、处理等操作。在PHP开发中,PHPExcel是一个强大的库,可以简化与Excel文件的交互,实现数据的导入与导出。本文将介绍如何使用PHPExcel来操作MySQL数据库,实现数据的导入和导出功能。PHPExcel的安装和配置

phpexcel为什么成为PHP开发者关注的对象phpexcel为什么成为PHP开发者关注的对象Mar 27, 2023 pm 06:15 PM

PHPExcel是一种处理微软 Excel 文件的开源 PHP 库,可以读取、创建、修改和保存 Excel 文件。它是一个强大且高度可定制的工具,可用于处理数据分析、报告生成、数据导入和导出等任务。在本文中,将介绍PHPExcel为什么成为PHP开发者关注的对象。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具