extjs 导出excel的问题
最近在弄extjs导出excel,参考了网上的一些代码,调试的时候总发现有些问题。我用的是extjs4,是不是和网上找的代码的版本不一样呢,如何转换呢。现在我把有问题的代码说明如下。(代码见最下面)
因为是第一次用extjs,这个星期二才第一次接触这个,很不熟悉。
希望各位前辈高手能够把我下面有问题的修订过来或者能给我一个extjs4版本下面grid导出excel的代码,不胜感激。
//创建xls----------------------------------------------------
var xlBook = xls.Workbooks.Add; //这个没报错 这个我把改成了 var xlBook = xls.Workbooks.Add(); 可以
var xlSheet = xlBook.Worksheets(1); //这个报错了 我把改成了 var xlSheet = xlBook.ActiveSheet; 可以
//先获取grid模型,再通过grid模型获得列数----------------------
var cm = grid.getColumnModel(); //这个用extjs4的时候有问题,报错,不知道如何改
var colCount = grid.getColumnModel().getColumnCount(); //这个也有问题,报错,不知道如何改
//把隐藏的字段过滤掉,把显示的字段的 (标记)放在数组里,----------------------------------------------
//后面通过getColumnHeader(temp_obj[i - 1])获取grid的列名称----------------------------------------
var temp_obj = [];
for(i=0;i <colCount;i++){ //colCount有问题
if(cm.isHidden(i) == true){ //cm是由grid.getColumnModel()创建的,这个运行时报错
}else if(cm.getColumnId(i).indexOf("CM")!=-1){ //cm有问题
temp_obj.push(i);
}
}
// 把grid的显示的列名称显示在excel表格第一列-------------------------------------------------------
for(i=1;i <=temp_obj.length;i++){
//显示列的列标题
xlSheet.Cells(1,i).Value = cm.getColumnHeader(temp_obj[i - 1]); //cm有问题
}
//首先获得grid里面数据,放在view里,然后在从第二行开始放到excel表格里-----------------------------------
var store = grid.getStore(); //对的,不报错
var recordCount = store.getCount(); //对的,不报错
var view = grid.getView(); //对的,不报错,但是下面view..getCell(2,2).innerText这个就报错了
for(i=1;i <=recordCount;i++){
for(j=1;j <=temp_obj.length;j++){
xlSheet.Cells(i + 1,j).Value = view.getCell(i - 1,temp_obj[j - 1]).innerText; //后面半句有问题
}
}
代码如下:
--------------------------------------------------
创建grid代码
//创建Grid表格组件
var gridConacterInfo =Ext.create('Ext.grid.Panel',{
title : '查询数据演示',
renderTo: Ext.getBody(),
width:1200,
height:610,
frame:true,
store: store,
columns: [//配置表格列
{header: "id", width: 30, dataIndex: 'id', sortable: true},
{header: "name", width: 80, dataIndex: 'name', sortable: true},
{header: "age", width: 80, dataIndex: 'age', sortable: true}
],
bbar: [{
xtype: 'pagingtoolbar',
store: store, //这里需要指定与表格相同的store
displayInfo: true
}],
tbar:
[
{
xtype:"button",
text:"导出方法 2",
pressed: true,
handler:function(){
downloadViewData(gridConacterInfo);
}
}
]
});
grid转换成excel 代码
-----------------------这个是网上找的,原版的,去掉了次要部分
function downloadViewData(gr