请教一个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 Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

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

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

完整指南:如何使用PHP擴充PHPExcel處理Excel檔案引言:在處理大量資料和統計分析時,Excel檔案經常被用作資料儲存和交換的一種常見格式。使用PHP擴充PHPExcel,我們可以輕鬆地讀取、寫入和修改Excel文件,從而有效地處理Excel資料。本文將介紹如何使用PHP擴充PHPExcel來處理Excel文件,並提供程式碼範例。一、安裝PHPExc

隨著數位化時代的到來,資料已經成為了我們日常生活和工作中最重要的一部分,而Excel檔案則成為資料處理的重要工具之一。相信許多PHP開發者也會在工作中常遇到使用Excel檔案進行資料處理與操作的情況。本文將為大家介紹使用PHPExcel函式庫來處理Excel檔案的方法和注意事項。什麼是PHPExcel? PHPExcel是一個PHP類

PHPEXCEL是優秀的PHP讀寫Excel檔案的類別庫,它提供了非常充分的API,能夠讓我們使用PHP來讀寫Excel檔案。而有些時候,我們需要將Excel文件轉換成CSV文件,在一些場合下使用。那麼,本文主要講述如何使用PHPEXCEL類別庫將Excel文件轉換成CSV文件,並進行開啟。

PHPExcel是一種處理微軟 Excel 檔案的開源 PHP 函式庫,可以讀取、建立、修改和儲存 Excel 檔案。它是一個強大且高度可自訂的工具,可用於處理資料分析、報告產生、資料匯入和匯出等任務。在本文中,將介紹PHPExcel為什麼成為PHP開發者關注的物件。

PHPExcel是開源的PHP函式庫,用來處理MicrosoftExcel(.xls和.xlsx)檔案。它可以讀取、寫入和操作Excel文件,提供了豐富的函數和方法。在PHP專案中使用PHPExcel函式庫,可以快速方便地處理Excel文件,實現資料的匯入、匯出和資料處理等功能。本文將介紹如何使用PHPExcel處理Excel檔案。一、安裝PHPExcel要使

在現今資訊快速傳遞的時代,資料的處理和儲存變得越來越重要。而Excel表格的使用是許多人的首選,這是因為Excel表格可以整合各種資料並且可以輕鬆地進行分析和處理。為了更有效率地完成Excel表格的創建,我們可以使用PHP和PHPExcel這兩個強大的工具。在本篇文章中,我們將介紹如何使用PHP和PHPExcel建立Excel檔案。 1.安裝PHPExcel首

PHP開發技巧:如何使用PHPExcel和PHPExcel_IOFactory操作MySQL資料庫概述:在Web開發中,處理Excel檔案是一個常見且重要的任務。 PHPExcel是一個功能強大且易於使用的PHP函式庫,它可以幫助我們讀取和寫入Excel檔案。本文將介紹如何使用PHPExcel和PHPExcel_IOFactory函式庫來操作MySQL資料庫。步驟1

PHP開發技巧:如何使用PHPExcel操作MySQL資料庫隨著網路的蓬勃發展,大量的資料儲存於資料庫中,並且需要進行匯入、匯出、處理等操作。在PHP開發中,PHPExcel是一個強大的函式庫,可以簡化與Excel檔案的交互,實現資料的匯入與匯出。本文將介紹如何使用PHPExcel來操作MySQL資料庫,實現資料的匯入和匯出功能。 PHPExcel的安裝與配置
