1、用Visual Studio新建一个类库,命名为CashFlowTools
2、引用必要的类库:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using Microsoft.Win32;
using Microsoft.Office.Interop.Excel;
其中最后一个需要在“引用”中添加一个COM组件“Microsoft.Office.Interop.Excel”
3、添加COM相关属性
[Guid("DDE8AA59-9860-44B3-B1AF-923ABB4A8EEE")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
注意要生成一个GUID:
这里我使用的LinqPad,一个轻量级的IDE,支持C#、VB.NET、Linq、F#、SQL语句,非常适合用来测试少量代码。
4、添加COM的注册和反注册函数,这两个函数代码是固定的。添加后的程序结构如下
namespace CashFlowTools
{
[Guid("DDE8AA59-9860-44B3-B1AF-923ABB4A8EEE")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class CashFlowTools
{
#region COM related
[ComRegisterFunction]
public static void RegisterFunction(Type type)
{
Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type, "Programmable"));
var key = Registry.ClassesRoot.OpenSubKey(GetSubKeyName(type, "InprocServer32"), true);
key.SetValue("", Environment.SystemDirectory + @"\mscoree.dll", RegistryValueKind.String);