Jadual Kandungan
回复讨论(解决方案)
Rumah pembangunan bahagian belakang tutorial php 请教一个PHPExcel问题

请教一个PHPExcel问题

Jun 23, 2016 pm 01:55 PM
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;}
Salin selepas log masuk


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

改正一下,????。

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

还是不太懂,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; }
Salin selepas log masuk

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

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

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

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

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

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



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

改用这个方法的确能弹出下载窗口了,但为什么在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>
Salin selepas log masuk

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

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1663
14
Tutorial PHP
1263
29
Tutorial C#
1236
24
Panduan Lengkap: Cara memproses fail Excel menggunakan sambungan php PHPExcel Panduan Lengkap: Cara memproses fail Excel menggunakan sambungan php PHPExcel Jul 28, 2023 pm 10:01 PM

Panduan Lengkap: Cara Memproses Fail Excel Menggunakan Sambungan PHP PHPExcel Pengenalan: Fail Excel sering digunakan sebagai format biasa untuk penyimpanan dan pertukaran data apabila memproses sejumlah besar data dan analisis statistik. Menggunakan sambungan PHP PHPExcel, kami boleh membaca, menulis dan mengubah suai fail Excel dengan mudah untuk memproses data Excel dengan berkesan. Artikel ini akan memperkenalkan cara menggunakan sambungan PHP PHPExcel untuk memproses fail Excel dan menyediakan contoh kod. 1. Pasang PHPExc

Pembangunan PHP: Gunakan PHPExcel untuk memproses fail Excel Pembangunan PHP: Gunakan PHPExcel untuk memproses fail Excel Jun 15, 2023 pm 03:45 PM

Dengan kemunculan era digital, data telah menjadi bahagian terpenting dalam kehidupan dan kerja harian kita, dan fail Excel telah menjadi salah satu alat penting untuk pemprosesan data. Saya percaya bahawa ramai pembangun PHP akan sering menghadapi penggunaan fail Excel untuk pemprosesan data dan operasi di tempat kerja. Artikel ini akan memperkenalkan anda kepada kaedah dan langkah berjaga-jaga untuk menggunakan perpustakaan PHPExcel untuk memproses fail Excel. Apakah PHPExcel? PHPExcel ialah kelas PHP

Cara menggunakan phpexcel untuk menukar fail Excel kepada fail CSV dan membukanya Cara menggunakan phpexcel untuk menukar fail Excel kepada fail CSV dan membukanya Mar 27, 2023 pm 04:16 PM

PHPEXCEL ialah perpustakaan kelas PHP yang sangat baik untuk membaca dan menulis fail Excel. Ia menyediakan API yang sangat mencukupi yang membolehkan kami menggunakan PHP untuk membaca dan menulis fail Excel. Kadangkala, kita perlu menukar fail Excel kepada fail CSV untuk digunakan pada beberapa keadaan. Jadi, artikel ini menerangkan terutamanya cara menggunakan perpustakaan kelas PHPEXCEL untuk menukar fail Excel kepada fail CSV dan membukanya.

Mengapa phpexcel telah menjadi tumpuan pembangun PHP Mengapa phpexcel telah menjadi tumpuan pembangun PHP Mar 27, 2023 pm 06:15 PM

PHPExcel ialah perpustakaan PHP sumber terbuka untuk memproses fail Microsoft Excel Ia boleh membaca, mencipta, mengubah suai dan menyimpan fail Excel. Ia adalah alat yang berkuasa dan sangat boleh disesuaikan yang boleh digunakan untuk mengendalikan tugas seperti analisis data, penjanaan laporan, import dan eksport data, dsb. Dalam artikel ini, kami akan memperkenalkan mengapa PHPExcel telah menjadi tumpuan pembangun PHP.

Bagaimana untuk menggunakan PHPExcel untuk memproses fail Excel? Bagaimana untuk menggunakan PHPExcel untuk memproses fail Excel? Jun 01, 2023 pm 02:01 PM

PHPExcel ialah perpustakaan PHP sumber terbuka untuk memproses fail Microsoft Excel (.xls dan .xlsx). Ia boleh membaca, menulis dan mengendalikan fail Excel, dan menyediakan pelbagai fungsi dan kaedah. Menggunakan perpustakaan PHPExcel dalam projek PHP, anda boleh memproses fail Excel dengan cepat dan mudah dan melaksanakan fungsi seperti import data, eksport dan pemprosesan data. Artikel ini akan memperkenalkan cara menggunakan PHPExcel untuk memproses fail Excel. 1. Untuk memasang PHPExcel, gunakan

Cipta fail Excel menggunakan PHP dan PHPExcel Cipta fail Excel menggunakan PHP dan PHPExcel May 11, 2023 am 08:40 AM

Dalam era pemindahan maklumat yang pesat hari ini, pemprosesan dan penyimpanan data telah menjadi semakin penting. Penggunaan jadual Excel adalah pilihan pertama bagi ramai orang kerana jadual Excel boleh mengintegrasikan pelbagai data dan boleh dianalisis dan diproses dengan mudah. Untuk melengkapkan penciptaan jadual Excel dengan lebih cekap, kami boleh menggunakan dua alat berkuasa, PHP dan PHPExcel. Dalam artikel ini, kami akan memperkenalkan cara membuat fail Excel menggunakan PHP dan PHPExcel. 1. Pasang PHPExcel dahulu

Petua pembangunan PHP: Cara menggunakan PHPExcel dan PHPExcel_IOFactory untuk mengendalikan pangkalan data MySQL Petua pembangunan PHP: Cara menggunakan PHPExcel dan PHPExcel_IOFactory untuk mengendalikan pangkalan data MySQL Jul 02, 2023 pm 02:28 PM

Petua pembangunan PHP: Cara menggunakan PHPExcel dan PHPExcel_IOFactory untuk mengendalikan pangkalan data MySQL Gambaran Keseluruhan: Dalam pembangunan web, memproses fail Excel adalah tugas biasa dan penting. PHPExcel ialah perpustakaan PHP yang berkuasa dan mudah digunakan yang boleh membantu kami membaca dan menulis fail Excel. Artikel ini akan memperkenalkan cara menggunakan perpustakaan PHPExcel dan PHPExcel_IOFactory untuk mengendalikan pangkalan data MySQL. Langkah 1

Kemahiran pembangunan PHP: Cara menggunakan PHPExcel untuk mengendalikan pangkalan data MySQL Kemahiran pembangunan PHP: Cara menggunakan PHPExcel untuk mengendalikan pangkalan data MySQL Jul 02, 2023 pm 12:21 PM

Kemahiran pembangunan PHP: Cara menggunakan PHPExcel untuk mengendalikan pangkalan data MySQL Dengan perkembangan pesat Internet, sejumlah besar data disimpan dalam pangkalan data, dan operasi seperti import, eksport dan pemprosesan diperlukan. Dalam pembangunan PHP, PHPExcel ialah perpustakaan berkuasa yang boleh memudahkan interaksi dengan fail Excel dan merealisasikan import dan eksport data. Artikel ini akan memperkenalkan cara menggunakan PHPExcel untuk mengendalikan pangkalan data MySQL dan melaksanakan fungsi import dan eksport data. Pemasangan dan konfigurasi PHPExcel

See all articles