ext.net GridPanel 导出 EXCEL 如何自定义显示列数,自定义表头样式

NiceYancy 2013-12-19 11:40:58
没有使用EXCEL模版
没有使用EXCEL插件
没有使用微软的DLL
如何实现GridPanel导出EXCEL,文档中显示自定义的列和自定义表头样式
我参照的是官网的例子
http://examples1.ext.net/#/GridPanel/Miscellaneous/Export_Data_Ajax/
不太了解.xsl 是不是可以通过Excel.xsl来控制导出EXCEL文档的样式
新手求指导。
...全文
368 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
NiceYancy 2013-12-30
  • 打赏
  • 举报
回复
我在EXCEL编辑好样式然后另存为.xml文档 用编译器打开 里面有可以使用的样式代码 把样式考到程序使用的.xsl文件中 就可以实现自定义的样式了 谢谢各位的解答。
lzpggg 2013-12-19
  • 打赏
  • 举报
回复
有个插件在IE下可以,但是chrome\firefox不行
/*
 *功能:直接由Ext的grid生成Excel
 *注意: 只支持IE
 *参数:param1: gridId
 *      param2: sheetName
 */
Ext.downExcel= function(config){
   //Ext.Excel.superclass.constructor.call(this, config);
   Ext.apply(this,config);
};
Ext.apply(Ext.downExcel.prototype,{
         extGridToExcel : function(){
           if (!Ext.isIE) {
             Ext.Msg.alert('Error','你的浏览器不支持!');
             return;
           }
           try{
                    if(Ext.getCmp(this.gridId)){
                        /********************************************* grid 生成 Excel ***************************************/
                        var oXL = new ActiveXObject("Excel.Application");
                        var oWB = oXL.Workbooks.Add();
                        var oSheet = oWB.ActiveSheet;

                        var grid = Ext.getCmp(this.gridId);
                        var store = grid.getStore();
                        var recordCount = store.getCount();
                        var view = grid.getView();
                        var cm = grid.getColumnModel();
                        var colCount = cm.getColumnCount();
                        var temp_obj = [];
                        //去掉隐藏的列
                        for(var i = 0; i < colCount;i++){
                            if(cm.isHidden(i)){
                            }else{
                                temp_obj.push(i);
                            }
                        }
                        oSheet.Cells(1,1).value =this.sheetName;;
                        //得到表头
                        for(var i = 1; i <= temp_obj.length;i++){
                               oSheet.Cells(2,i).value = cm.getColumnHeader(temp_obj[i - 1]);
                        }
                        //写入数据
                        for(var i = 1 ; i <= recordCount; i++){
                              for(var j = 1; j<= temp_obj.length; j++){
                                     //设置单元格格式为字符串
                                     oSheet.Cells(i+2,j).NumberFormat = '@';
                                     oSheet.Cells(i+2,j).value = view.getCell(i-1,temp_obj[j-1]).innerText;
                             }
                        }
                        if(this.sheetName){
                              oSheet.Name = this.sheetName;
                        }
                        oXL.UserControl = true;
                        oXL.Visible = true;
                    }else{
                        Ext.Msg.alert('Error','明细数据grid没有创建成功!');
                        return;
                    }
            }catch(e){
                    if(Ext){
                        Ext.Msg.show({
                            title:'提示',
                            msg:'请设置IE的菜单\'工具\'->Internet选项->安全->自定义级别->\'对未标记为可安全执行脚本ActiveX控件初始化并执行脚本\'->选择[启用]  就可以生成Excel',
                            buttons:Ext.Msg.OK,
                            icon:Ext.Msg.INFO
                        });
                    }else{
                        alert('不支持ExtJs框架');
                        return;
                    }
                }
    }
});
使用

//导出grid数据到excel
  exportToExcel : function() {
    var excel = new Ext.downExcel({
      gridId    : this.id,
      sheetName : this.title
    });
    excel.extGridToExcel();
  }
Go 旅城通票 2013-12-19
  • 打赏
  • 举报
回复
他的内容就是文本格式的,你下载他的xls文件来下看下格式,你按照他的格式生成那些内容,设置Content-Disposition响应头就能保存为xls文件了
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=\"xxxx.xls\"");
Response.Write("生成的内容字符串");

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧