请教一个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方法使用不了。多谢二位的指导,让我学到很多东西,不过我分不多,见谅了

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

전체 가이드: PHP 확장을 사용하여 Excel 파일을 처리하는 방법 PHPExcel 소개: Excel 파일은 대용량 데이터 처리 및 통계 분석 시 데이터 저장 및 교환을 위한 일반적인 형식으로 사용되는 경우가 많습니다. PHP 확장 PHPExcel을 사용하면 Excel 파일을 쉽게 읽고, 쓰고, 수정하여 Excel 데이터를 효과적으로 처리할 수 있습니다. 이 기사에서는 PHP 확장 PHPExcel을 사용하여 Excel 파일을 처리하고 코드 예제를 제공하는 방법을 소개합니다. 1. PHPExc 설치

디지털 시대의 도래와 함께 데이터는 우리의 일상과 업무에서 가장 중요한 부분이 되었고, 엑셀 파일은 데이터 처리를 위한 중요한 도구 중 하나가 되었습니다. 나는 많은 PHP 개발자들이 직장에서 데이터 처리 및 작업을 위해 Excel 파일을 사용하는 경우를 자주 접하게 될 것이라고 생각합니다. 이 글에서는 PHPExcel 라이브러리를 사용하여 Excel 파일을 처리하는 방법과 주의사항을 소개합니다. PHPExcel이란 무엇입니까? PHPExcel은 PHP 클래스입니다.

PHPEXCEL은 Excel 파일을 읽고 쓰는 데 탁월한 PHP 클래스 라이브러리입니다. PHP를 사용하여 Excel 파일을 읽고 쓸 수 있는 매우 충분한 API를 제공합니다. 경우에 따라 사용하기 위해 Excel 파일을 CSV 파일로 변환해야 하는 경우가 있습니다. 그래서 이번 글에서는 PHPEXCEL 클래스 라이브러리를 사용하여 엑셀 파일을 CSV 파일로 변환하고 여는 방법을 주로 설명합니다.

PHPExcel은 Microsoft Excel 파일을 처리하기 위한 오픈 소스 PHP 라이브러리로 Excel 파일을 읽고, 만들고, 수정하고 저장할 수 있습니다. 데이터 분석, 보고서 생성, 데이터 가져오기 및 내보내기 등과 같은 작업을 처리하는 데 사용할 수 있는 강력하고 고도로 사용자 정의 가능한 도구입니다. 이 기사에서는 PHPExcel이 PHP 개발자의 중심이 된 이유를 소개합니다.

PHPExcel은 Microsoft Excel(.xls 및 .xlsx) 파일을 처리하기 위한 오픈 소스 PHP 라이브러리입니다. 엑셀 파일을 읽고 쓰고 조작할 수 있으며, 다양한 기능과 방법을 제공합니다. PHP 프로젝트에서 PHPExcel 라이브러리를 사용하면 Excel 파일을 빠르고 쉽게 처리하고 데이터 가져오기, 내보내기, 데이터 처리 등의 기능을 구현할 수 있습니다. 이 기사에서는 PHPExcel을 사용하여 Excel 파일을 처리하는 방법을 소개합니다. 1. PHPExcel을 설치하려면 다음을 사용하십시오.

오늘날 급속한 정보 전송 시대에 데이터 처리 및 저장은 점점 더 중요해지고 있습니다. 많은 사람들이 엑셀 테이블을 가장 먼저 선택하는 이유는 엑셀 테이블이 다양한 데이터를 통합할 수 있고 쉽게 분석하고 처리할 수 있기 때문입니다. Excel 테이블 생성을 보다 효율적으로 완료하기 위해 PHP와 PHPExcel이라는 두 가지 강력한 도구를 사용할 수 있습니다. 이번 글에서는 PHP와 PHPExcel을 사용하여 Excel 파일을 만드는 방법을 소개하겠습니다. 1. 먼저 PHPExcel을 설치하세요

PHP 개발 팁: PHPExcel 및 PHPExcel_IOFactory를 사용하여 MySQL 데이터베이스를 작동하는 방법 개요: 웹 개발에서 Excel 파일을 처리하는 것은 일반적이고 중요한 작업입니다. PHPExcel은 Excel 파일을 읽고 쓰는 데 도움이 되는 강력하고 사용하기 쉬운 PHP 라이브러리입니다. 이 기사에서는 PHPExcel 및 PHPExcel_IOFactory 라이브러리를 사용하여 MySQL 데이터베이스를 작동하는 방법을 소개합니다. 1 단계

PHP 개발 기술: PHPExcel을 사용하여 MySQL 데이터베이스를 운영하는 방법 인터넷의 활발한 발전으로 인해 데이터베이스에 많은 양의 데이터가 저장되고 가져오기, 내보내기 및 처리와 같은 작업이 필요합니다. PHP 개발에서 PHPExcel은 Excel 파일과의 상호 작용을 단순화하고 데이터 가져오기 및 내보내기를 실현할 수 있는 강력한 라이브러리입니다. 이 기사에서는 PHPExcel을 사용하여 MySQL 데이터베이스를 작동하고 데이터 가져오기 및 내보내기 기능을 구현하는 방법을 소개합니다. PHPExcel 설치 및 구성
