02月
22日

YohoAdSence广告墙

类归于: 做东西 Hbomb 写于 09:58

通过3p/2w的努力YohoAdSence终于上线了,这个版本或许是beta版,欢迎大家多提意见什么的。
网站地址:yohoads.yoho.cn
我的博客做了一个广告墙页面:hbomb.name/wordpress/yoho-ad
别的不说了,大家去看看吧!

02月
22日

Javascript(Jscript)通过ActiveX来操作 Excel

类归于: 做东西 Hbomb 写于 09:47

偶家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