转载链接:JavaScript中的ActiveXObject控制Excel的方法
一、使用JavaScript中的ActiveXObject填充并设置Excel格式
//1.创建实例并创建工作表 var XLObj = new ActiveXObject("Excel.Application");//创建Excel实例 var xlBook = XLObj.Workbooks.Add; //新增工作簿 var ExcelSheet = xlBook.Worksheets(1); //创建工作表 //2.保存表格 ExcelSheet.SaveAs("C:\\TEST.XLS"); //3.使 Excel 通过 Application 对象可见 ExcelSheet.Application.Visible = true; //或者ExcelSheet.Visible=true; //4.打印 xlBook.PrintOut;或者:ExcelSheet.PrintOut; //5.关闭 xlBook.Close(savechanges=false); //或者ExcelSheet.Close(savechanges=false); //6.结束进程 ExcelSheet.Application.Quit(); //或者XLObj.Quit(); XLObj=null; //7.页面设置 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.CenterFooter = "页脚中部内容"; ExcelSheet.ActiveSheet.PageSetup.LeftFooter = "页脚左部内容"; ExcelSheet.ActiveSheet.PageSetup.RightFooter = "页脚右部内容"; //8.对单元格操作,带*部分对于行,列,区域都有相应属性 ExcelSheet.ActiveSheet.Cells(row,col).Value = "内容"; //设置单元格内容 ExcelSheet.ActiveSheet.Cells(row,col).Borders.Weight = 1; //设置单元格边框*() //设置单元格底色*(1-黑色,2-白色,3-红色,4-绿色,5-蓝色,6-黄色,7-粉红色,8-天蓝色,9-酱土色..可以多做尝试) ExcelSheet.ActiveSheet.Cells(row,col).Interior.ColorIndex = 1; //设置单元格背景样式*(1-无,2-细网格,3-粗网格,4-斑点,5-横线,6-竖线..可以多做尝试) ExcelSheet.ActiveSheet.Cells(row,col).Interior.Pattern = 1; //设置字体颜色*(与上相同) 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; //设置为自动换行* //水平对齐方式枚举* (1-常规,2-靠左,3-居中,4-靠右,5-填充 6-两端对齐,7-跨列居中,8-分散对齐) ExcelSheet.ActiveSheet.Cells(row,col).HorizontalAlignment = 3; //垂直对齐方式枚举*(1-靠上,2-居中,3-靠下,4-两端对齐,5-分散对齐) ExcelSheet.ActiveSheet.Cells(row,col).VerticalAlignment = 2; //9.行,列有相应操作: 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列 //10.区域有相应操作: XLObj.Range(startcell+":"+endcell).Select; //如Range("A2:H8")即A列第2格至H列第8格的整个区域 //11.合并单元格 XLObj.Range(startcell+":"+endcell).MergeCells = true; //如Range("A2:H8")即将A列第2格至H列第8格的整个区域合并为一个单元格 //或者:XLObj.Range("A2",XLObj.Cells(8, 8)).MergeCells = true; //12.设置行高与列宽 ExcelSheet.ActiveSheet.Columns(startcol+":"+endcol).ColumnWidth = 22;//设置从firstcol到stopcol列的宽度为22 ExcelSheet.ActiveSheet.Rows(startrow+":"+endrow).RowHeight = 22;//设置从firstrow到stoprow行的宽度为22 //13.设置该区域为自适应高度和宽度 var myrange=oSheet.Range(oSheet.Cells(2,1),oSheet.Cells(2,6)); myRange.Columns.AutoFit();//好像不太管用 myRange.Rows.AutoFit();//好像不太管用
二、使用JavaScript将表格内容导出到Excel的方式
//1.整个表格拷贝到EXCEL中 function CopyTable(tableid){ //整个表格拷贝到EXCEL中 var curTbl = document.getElementById(tableid); var oXL = new ActiveXObject("Excel.Application"); var oWB = oXL.Workbooks.Add();//创建AX对象excel var oSheet = oWB.ActiveSheet;//获取workbook对象 var sel = document.body.createTextRange();//激活当前sheet sel.moveToElementText(curTbl);//把表格中的内容移到TextRange中 sel.select();//全选TextRange中内容 sel.execCommand("Copy");//复制TextRange中内容 oSheet.Paste();//粘贴到活动的EXCEL中 oXL.Visible = true;//设置excel可见属性 } //2.把单元格内容拷贝到Excel,并设置单元格格式. function method2(tableid){ var curTbl = document.getElementById(tableid); var oXL = new ActiveXObject("Excel.Application");//创建AX对象excel var oWB = oXL.Workbooks.Add();//获取workbook对象 var oSheet = oWB.ActiveSheet;//激活当前sheet var Lenr = curTbl.rows.length; var y=document.getElementById('dropYear'); var m=document.getElementById('dropMonth'); //取得表格行数 oSheet.Cells( 1, 1).value='商户名称:工商银行商城'; oSheet.Range(oSheet.Cells(1,1),oSheet.Cells(1,6)).Merge() oSheet.Cells(2,1).value='日期:'+y.options[y.selectedIndex].value+'-'+m.options[m.selectedIndex].value; oSheet.Range(oSheet.Cells(2,1),oSheet.Cells(2,6)).Merge() oSheet.Cells( 3, 1).value='销售情况' oSheet.Range(oSheet.Cells(3,1),oSheet.Cells(3,6)).Merge() oSheet.Cells( 3, 1).HorizontalAlignment=3; oSheet.Cells( 3, 1).Font.Size=14; oSheet.Cells( 3, 1).Font.Bold = true; oSheet.Range(oSheet.Cells(4,1),oSheet.Cells(4,6)).Merge() oSheet.Cells(4,1).value=document.getElementById('lbMessage').innerText; for (i = 0; i < Lenr; i++){ var Lenc = curTbl.rows(i).cells.length; for (j = 0; j < Lenc; j++){//取得每行的列数 oSheet.Cells(i + 5, j + 1).value = curTbl.rows(i).cells(j).innerText;//赋值 } } oSheet.Cells(i+6,2).value=document.getElementById('hidSum').value; oSheet.Columns.AutoFit(); oSheet.Rows.AutoFit(); oSheet.Rows(4).RowHeight = 30; oXL.Visible = true;//设置excel可见属性 oXL.Quit(); oXL = null; idTmr = window.setInterval("Cleanup();",1);//强制释放资源 } //3.清除Excel资源 function Cleanup(){ window.clearInterval(idTmr); CollectGarbage(); }
三、使用JavaScript按照表格格式复制内容到剪切板
//在Excel中进行粘贴 function copytable(){ var content=''; var tb=document.getElementById('GVmain'); var rows=tb.rows; for(var i=0;i<rows.length;i++){ var cells=rows[i].cells; for(var j=0;j<cells.length;j++){ content +=cells[j].innerText.toString()+'\t'; } content +='\n'; } if(content!=''){ clipboardData.setData("text",content); alert("复制成功!") } }