作者mercurial (多变)
看板C_Sharp
标题Re: [问题] 请问在C#中如何操作Excel档案
时间Wed Jun 15 00:48:25 2005
※ 引述《saxophone (碧海蓝天N  )》之铭言:
: ※ 引述《mercurial (多变)》之铭言:
: : 可以直接用Excel的COM物件
: : 在C#专案内,加入参考时,选COM那一页,找到
: : Microsoft Excel ....
: : 里面有写好的function可以直接操作Excel
: 请问一下用c#写成的dll or com,在execel 2000里面
: 无法用增益集加入(因为无自动化),请问知道要如何
: 使用.net做成的com呢?
要用 System.Runtime.InteropServices 这个namespace去做
在你要公开成COM的物件上加
[ComSourceInterfaces(typeof(ExcelCom.NotifyEvent))]
//上行为给Excel用的事件的inferface
[ClassInterface(ClassInterfaceType.AutoDual)]
public class QuoteCom : IQuoteCom //公开function的interface
{
public event NotifyDelegate Notify; //给Excel用的事件
}
要被Excel呼叫的function要定义在interface里面
(上例的interface为IQuoteCom)
若是要加事件给Excel用,用delegate来做,如:
public delegate void NotifyDelegate();
而且一样要用interface,如下:
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
public interface NotifyEvent
{
void Notify();
}
物件则要加以下这行
[ComSourceInterfaces(typeof(ExcelCom.NotifyEvent))]
专案的AssemblyInfo.cs内要加key
[assembly: AssemblyKeyFile("key档的路径")]
key档的产生方法为:用sn.exe? sn -k 档名
专案要成dll档,或是exe档都可
产生TLB档及注册:
regasm excelcom.dll /tlb:excelcom.tlb
tlbexp excelcom.dll /out:excelcom.tlb
gacutil /i excelcom.dll
就可以用增益集引用进来了
至於加了那些[]里面是什麽意思我也不清楚,我只是抄来用:p
详细情形请参阅.net说明文件或google查查
因为我是在2~3年前有用过,已经忘得差不多了><"
所以如果有错,请指教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.188.92