ExtJs Grid导出到Excel(修正版)

ExtJs Grid导出到Excel(修正版)

以下的几个问题我都已经整理和修改:
1、没有考虑到含有序号和选择框的grid,
2、utf8转换bug.
3、宽度的bug
4、不支持ie6、ie7和Safari

修改后的代码见附件的gridToExcel.js.zip

注:我的文件编码都是utf8格式的(no bom),需要其它格式的请自行修改。

使用方法更简单,不需要定义linkbutton,直接使用标准的button

01. new Ext.Button({
02.     text: '导出到Excel',
03.     handle: function() {
04.         var vExportContent = grid.getExcelXml();
05.         if (Ext.isIE6 || Ext.isIE7 || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) {
06.             if (! Ext.fly('frmDummy')) {
07.                 var frm = document.createElement('form');
08.                 frm.id = 'frmDummy';
09.                 frm.name = id;
10.                 frm.className = 'x-hidden';
11.                 document.body.appendChild(frm);
12.             }
13.             Ext.Ajax.request({
14.                 url: '/exportexcel.php',
15.                 method: 'POST',
16.                 form: Ext.fly('frmDummy'),
17.                 callback: function(o, s, r) {
18.                     //alert(r.responseText);
19.                 },
20.                 isUpload: true,
21.                 params: {exportContent: vExportContent}
22.             })
23.         } else {
24.             document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent);
25.         }
26. });

 

以上以php为例,其它语言方法相同

exportexcel.php

01. <?php
02. header("Pragma: public");
03. header("Expires: 0"); // set expiration time
04. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
05. header("Content-Type: application/force-download");
06. header('Content-type: application/vnd.ms-excel');
07. header("Content-Disposition:attachment;filename=export");
08. echo $_REQUEST['exportContent']; 
09. ?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值