EXTJS4X的Grid导出Excel

xiaoxiao2021-02-28  91

在网上参考了以为大神的EXT4以前版本的进行了修改

function downloadViewData(grid) {//grid是所要导出的grid表格

alert("进入真正的方法");    try {     var xls = new ActiveXObject("Excel.Application");     } catch (e) {     alert("要打印该表,您必须安装Excel电子表格软件,同时浏览器须使用“ActiveX 控件”,您的浏览器须允许执行控件。 请点击【帮助】了解浏览器设置方法!");     return "";       }    var cm = grid.columns;    var colCount = cm.length;    //    alert('总列数:'+colCount);    var selected = grid.getSelectionModel().getSelection();    var xlBook = xls.Workbooks.Add;    var xlSheet = xlBook.Worksheets(1);        var temp_obj = [];    // 只下载没有隐藏的列(isHidden()为true表示隐藏,其他都为显示)        alert(cm[0].hidden);    alert(cm[0].hidden == false);    for (var i = 1; i < colCount; i++) {     if (cm[i].hidden == false) {         temp_obj.push(i);         }   }    xls.Range("A1",xls.Cells(1, temp_obj.length)).MergeCells = true;    xlSheet.Cells(1, 1).Value = "我最帅";    xlSheet.Cells(1, 1).Font.Size = 10;    xlSheet.Cells(1, 1).Font.Bold = true;    xlSheet.Cells(1, 1).HorizontalAlignment= 3;    xlSheet.Cells(1, 1).Interior.Pattern = 2;        for (var l = 1; l <= temp_obj.length; l++) {        xlSheet.Cells(2, l).Value = cm[temp_obj[l-1]].text;    }       var store = grid.getStore();    var recordCount = store.getCount(); //    alert("记录总数:"+recordCount); //    alert('总列数:'+temp_obj.length);    if(selected.length < 1){        for (var k = 1; k <= recordCount; k++) {       //alert('k-'+k);       model = store.getAt(k-1);       for (var j = 1; j <= temp_obj.length; j++) { var name = cm[j].dataIndex; var value = model.get(name);         xlSheet.Cells(k + 2, j).Value = value;         }    }     }else{    for (var k = 1; k <= selected.length; k++) {       //alert('k-'+k);       model = selected[k-1];        for (var j = 1; j <= temp_obj.length; j++) { var name = cm[j].dataIndex; var value = model.get(name);         xlSheet.Cells(k + 2, j).Value = value;         }     }        }          alert("cell赋值结束");        xls.visible = true; // 设置excel为可见    xlSheet.Columns.AutoFit;    xls.ActiveWindow.Zoom = 75;    xls.UserControl = true; // 很重要,不能省略,不然会出问题 意思是excel交由用户控制    xls = null;    xlBook = null;    xlSheet = null;

  };

下面是转载的一位大神JS操作EXCEL的重用方法

http://www.cnblogs.com/askyes/archive/2011/08/16/2141490.html

1.创建一个新Excel表格

    var XLObj = new ActiveXObject("Excel.Application");     var xlBook = XLObj.Workbooks.Add;                         //新增工作簿     var ExcelSheet = xlBook.Worksheets(1);                   //创建工作表

2.保存表格     ExcelSheet.SaveAs("C:\\TEST.XLS");

3.使 Excel 通过Application 对象可见     ExcelSheet.Application.Visible = true;

4.打印     xlBook.PrintOut;     或者:     ExcelSheet.PrintOut;

5.关闭     xlBook.Close(savechanges=false);     或者:     ExcelSheet.Close(savechanges=false);

6.结束进程     ExcelSheet.Application.Quit();     或者:     XLObj.Quit();     XLObj=null;

function endXlsObj(){         oXL.UserControl = true;        oXL=null;        oWB=null;        activeSheet=null;        //结束excel进程,退出完成     idTmr = window.setInterval("Cleanup();",1); } function Cleanup() {     window.clearInterval(idTmr);     CollectGarbage(); } 

7.页面设置

    ExcelSheet.ActiveSheet.PageSetup.Orientation = 2;     ExcelSheet.ActiveSheet.PageSetup.LeftMargin= 2/0.035;         //页边距 左2厘米     ExcelSheet.ActiveSheet.PageSetup.RightMargin = 3/0.035;      //页边距 右3厘米,     ExcelSheet.ActiveSheet.PageSetup.TopMargin = 4/0.035;        //页边距 上4厘米,     ExcelSheet.ActiveSheet.PageSetup.BottomMargin = 5/0.035;   //页边距 下5厘米     ExcelSheet.ActiveSheet.PageSetup.HeaderMargin = 1/0.035;   //页边距 页眉1厘米     ExcelSheet.ActiveSheet.PageSetup.FooterMargin = 2/0.035;    //页边距 页脚2厘米     ExcelSheet.ActiveSheet.PageSetup.CenterHeader = "页眉中部内容";     ExcelSheet.ActiveSheet.PageSetup.LeftHeader = "页眉左部内容";     ExcelSheet.ActiveSheet.PageSetup.RightHeader = "页眉右部内容";     ExcelSheet.ActiveSheet.PageSetup.LeftFooter = "页脚左部内容";     ExcelSheet.ActiveSheet.PageSetup.RightFooter = "页脚右部内容";            ExcelSheet.ActiveSheet.PageSetup.CenterHeader = "&\"宋体,加粗\"&18长天公司" + date1 + "" + date2 + "(施工图)项目进度检查表";     ExcelSheet.ActiveSheet.PageSetup.RightHeader = "&D";     ExcelSheet.ActiveSheet.PageSetup.PrintGridlines = true;     ExcelSheet.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1";     ExcelSheet.ActiveSheet.PageSetup.Zoom = 75;

8.对单元格操作,带*部分对于行,列,区域都有相应属性     ExcelSheet.ActiveSheet.Cells(row,col).Value = "内容";                //设置单元格内容     ExcelSheet.ActiveSheet.Cells(row,col).Borders.Weight = 1;        //设置单元格边框*()     ExcelSheet.ActiveSheet.Cells(row,col).Interior.ColorIndex = 1;    //设置单元格底色*(1-黑色,         2-白色,3-红色,4-绿色,5-蓝色,6-黄色,7-粉红色,8-天蓝色,9-酱土色..可以多做尝试)     ExcelSheet.ActiveSheet.Cells(row,col).Interior.Pattern = 1;         //设置单元格背景样式*(1-无,                                                      2-细网格,3-粗网格,4-斑点,5-横线,6-竖线..可以多做尝试)     ExcelSheet.ActiveSheet.Cells(row,col).Font.ColorIndex = 1;        //设置字体颜色*(与上相同)     ExcelSheet.ActiveSheet.Cells(row,col).Font.Size = 10;                //设置为10号字*     ExcelSheet.ActiveSheet.Cells(row,col).Font.Name = "黑体";        //设置为黑体*     ExcelSheet.ActiveSheet.Cells(row,col).Font.Italic = true;             //设置为斜体*     ExcelSheet.ActiveSheet.Cells(row,col).Font.Bold = true;             //设置为粗体*     ExcelSheet.ActiveSheet.Cells(row,col).ClearContents;                //清除内容*     ExcelSheet.ActiveSheet.Cells(row,col).WrapText=true;               //设置为自动换行*     ExcelSheet.ActiveSheet.Cells(row,col).HorizontalAlignment = 3; //水平对齐方式枚举* (1-常规,                                     2-靠左,3-居中,4-靠右,5-填充 6-两端对齐,7-跨列居中,8-分散对齐)     ExcelSheet.ActiveSheet.Cells(row,col).VerticalAlignment = 2;      //垂直对齐方式枚举*(1-靠上,                                                                                   2-居中,3-靠下,4-两端对齐,5-分散对齐)     //行,列有相应操作:     ExcelSheet.ActiveSheet.Rows(row).     ExcelSheet.ActiveSheet.Columns(col).     ExcelSheet.ActiveSheet.Rows(startrow+":"+endrow).                  //Rows("1:5")15     ExcelSheet.ActiveSheet.Columns(startcol+":"+endcol).               //Columns("1:5")15     //区域有相应操作:     XLObj.Range(startcell+":"+endcell).Select;         //Range("A2:H8")A列第2格至H列第8格的整个区域     XLObj.Selection.     //合并单元格     XLObj.Range(startcell+":"+endcell).MergeCells = true;         //Range("A2:H8")即将A列第2格至H列第8格的整个区域合并为一个单元格     或者:     XLObj.Range("A2",XLObj.Cells(8, 8)).MergeCells = true;

9.设置行高与列宽     ExcelSheet.ActiveSheet.Columns(startcol+":"+endcol).ColumnWidth = 22;         //设置从firstcolstopcol列的宽度为22     ExcelSheet.ActiveSheet.Rows(startrow+":"+endrow).RowHeight = 22;         //设置从firstrowstoprow行的宽度为22

转载请注明原文地址: https://www.6miu.com/read-55507.html

最新回复(0)