偶家mm最近被工作上n多excel数据表的操作弄烦了,看的我心里不是滋味,总想帮助下,但是我对excel的宏操作也是菜鸟,最后想来还是使用Javascript来处理逻辑,然后通过ActiveX来操作Excel,基本原理是这样的:读取excel->js处理->输出excel。
js处理这边我就不说了,因为不是本文关注的重点。主要看下通过ActiveX的Excel操作,我主要用到,Excel.Application这个对象。其实查看文档Excel的操作Application、Workbook、Worksheet、Range这几个对象,分别是:Application对象表示整个应用程序,Worksheet对象标示工作表,Workbook对象表示包含Worksheet对象的一个集合,Range则主要用于单元格抽象表示的对象,用于处理单个单元格或成组的单元格。
在Jscrīpt中,通过ActiveXObject对象来启用并返回Automation对象的引用。不管是什么操作首先创建一个ActiveXObject对象。
1 2 | var xlsApp = new ActicveXObject(“Excel.Application”); xlsApp .Visible = true;//使Excel可见的 |
首先看下读取操作:
1 2 3 4 5 6 | var wb= xlsApp.Workbooks.open("C:\\temp.xls");//在本地打开一个xls文件。 var aSheet = wb.ActiveSheet;//获取当前的工作表,也可以选定打开哪个工作表,像:wb.Worksheets(1).select() var rows=wb.aSheet .UsedRange.Cells.Rows.Count;//当前打开表的行数 var cols=wb.aSheet.UsedRange.Columns.Count;//当前打开表的列数 var value= oSheet.Cells(1,1).value;//获取第一行第一列的单元格的值 wb.close();//完成读取操作需要关闭当前的xls |
写入Excel文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var xlBook = xlsApp.Workbooks.Add;//添加一个excel集(即一个xls文件) var xlsheet = xlBook.Worksheets(1);//获取一个工作表 var rang = xlsheet.Cells(i,1).Value="xxx";//往工作表的单元格里添加值 xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Interior.ColorIndex=5//设置单元格背景色为蓝色 xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,6)).Font.ColorIndex=4;//设置字体色 xlsheet.Rows(1).RowHeight = 25;//设置行高 xlsheet.Rows(1).Font.Size=14;//设置字体大小 xlsheet.Rows(1).Font.Name="黑体";//设置字体 xlsheet.Columns("A:D").ColumnWidth =18;//设置列宽 xlsheet.Columns(2).NumberFormatLocal="@";//设置显示字符而不是数字 range.WrapText = true ;//设置单元格内容自动换行 range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//设置单元格内容竖直堆砌方式 range.VerticalAlignment=Excel.XlVAlign.xlVAlignCenter//设置单元格内容水平对齐方式 range.WrapText = true;//设置单元格自动换行 xlsheet.Range(xlsheet.Cells(1,1),xlsheet.Cells(1,4)).mergecells=true;//合并单元格 xls.UserControl = true; //很重要,不能省略,不然会出问题 意思是Excel交由用户控制 //以下是回收内存 xls=null; xlBook=null; xlsheet=null; |
参考:
- http://www.blogjava.net/fool/archive/2006/06/27/55285.html
- http://www.itjj.net/softtest/tools/20080523/298118.html
- http://www.javaeye.com/topic/3529
没有关联的文件。






谢谢QQ
辛苦啦
我还在加班ing
Comment 由 你家mm — 2009-02-24 @ 15:46