顯示廣告
隱藏 ✕
看板 uefacool
作者 uefangsmith (uefang.bbs@ptt.cc)
標題 Re: [問題] 請問在C#中如何操作Excel檔案
時間 2018年03月24日 Sat. PM 03:01:04


※ 本文轉寄自 uefang.bbs@ptt.cc

看板 C_Sharp
作者 mercurial (多變)
標題 Re: [問題] 請問在C#中如何操作Excel檔案
時間 Wed Jun 15 00:48:25 2005


※ 引述《saxophone (碧海藍天    )》之銘言:
: ※ 引述《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

--
※ 看板: uefacool 文章推薦值: 0 目前人氣: 0 累積人氣: 88 
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇
看板名稱: 確定(Enter) 取消(Esc) 搜尋(Space)
查詢帳號: 確定(Enter) 取消(Esc) 搜尋(Space)
搜尋: m)m文 b)進板 c)未分類 a)作者 /)標題 q)取消?[q]

搜尋 送出(Enter) 取消(Esc)

回覆文章至: f)看板 m)作者信箱 b)兩者皆是 q)取消?[f]
要引用原文嗎? y)引用原文 n)不引用 a)全部回覆 r)複製原文 q)取消?[y]
轉錄本文章於看板: 1)使用連結 2)使用複製 q)取消 ?[1]
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc) 全部(a)

確定要刪除這篇文章?(可按大U救回) 確定(Enter) 取消(Esc)

刪除理由:

確定(Enter) 取消(Esc)
加到這個分類: 確定(Enter) 下一層(→) 回上層(←) 取消(Esc)
你覺得這篇文章: 1)真讚 2)真瞎 q)取消?[1] (再選一次即可收回)
你覺得這篇文章: 1)值得推薦 2)表示反對 3)單純註解 q)取消?[3]
guest
預覽(Enter) 取消(Esc)
上傳圖片
按ctrl+Enter可輸入下一行。
guest
確定要送出? 確定(Enter) 取消(Esc) 繼續(e)
搜尋: 送出(Enter) 取消(Esc)

▏▎▍▌▋▊▉ 請按任意鍵繼續