Re: [問題] 請問在C#中如何操作Excel檔案
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 8 之 9 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章