在网上参考了以为大神的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")即1到5行 ExcelSheet.ActiveSheet.Columns(startcol+":"+endcol). //如Columns("1:5")即1到5列 //区域有相应操作: 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; //设置从firstcol到stopcol列的宽度为22 ExcelSheet.ActiveSheet.Rows(startrow+":"+endrow).RowHeight = 22; //设置从firstrow到stoprow行的宽度为22