这段时间要做个Excel的东西。本来是打算用DotNet来控制Excel的。不过后来要求做成两个部分。一个为Excel的设计工具,为开发人员用。另外一个是给最终用户使用。
最终用户很多,分散在各地,所以如果要求他们安装DotNet,那么是很痛苦的事情。
最后打算给最终用户使用的Excel的控制采用VBA的方式。而VBA则在用DotNet做的设计工具设计Excel界面时自动生成相关的VBA代码。
一个例子如下:
Excel.Workbook book=.....
Excel.Worksheet sheet=...
//得到第一个Sheet的编程模型
VBIDE.VBComponent componentsheet1=book.VBProject.VBComponents.Item(sheet.CodeName);
//测试,添加一行
componentsheet1.CodeModule.AddFromString("'Hello'");
//测试,删除所有行
componentsheet1.CodeModule.DeleteLines(1,componentsheet1.CodeModule.CountOfLines);
//添加代码
componentsheet1.CodeModule.AddFromString(@"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Interior.Color = RGB(222,222,222)
End Sub
"
);
其实就这么简单。生成这个VBA代码,和在ASP.NET中为HTML生成相关的JavaScript的原理差不多。