1.前言:
透過DDE通訊的方式,當改變EXCEL中的資料時,動態更新資料到C#的Winform中。
2.說明:
動態資料交換(Dynamic Data Exchange,簡稱DDE),可在應用程序之間做數據交換及命令調用,DDE 的說明可參考
http://en.wikipedia.org/wiki/Dynamic_Data_Exchange
NDde是一個開放原始碼,透過NDde可以用C#程式語言來接收DDE資料,或是作成DDE Server傳送資料給DDE Client。
NDde的DLL檔及相關說明文件可從下列網址下載:
http://ndde.codeplex.com/
準備EXCEL檔案,確認以下事項:
-->檔案中需要查詢資料的頁籤名稱: 例如Sheet1
-->查詢資料的範圍: 例如從R1C1到R6C2
建立C# Winform新專案,加入參考NDde.dll
加入命名空間
using NDde.Client;
定義Client
DdeClient client = new DdeClient("excel", @"D:\tmp\b.xls\sheet1");
Form開啟與結束事件
private void Form1_Load(object sender, EventArgs e) { client.Advise += new EventHandler(client_Advise); client.Connect(); client.StartAdvise("r1c1:r6c2", 1, true, 60000); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { if (client.IsConnected == true) { client.Disconnect(); } }
Advise事件
private void client_Advise(object sender, DdeAdviseEventArgs e) { byte[] itemByte; string itemString = ""; string errMessage = ""; try { itemByte = e.Data; itemString = Encoding.GetEncoding("Big5").GetString(itemByte, 0, itemByte.Length); txtMessage.Invoke(new EventHandler(delegate { txtMessage.Clear(); txtMessage.Text = itemString; })); } catch (NDde.DdeException ex) { errMessage = ex.Message; } }
圖例: 測試時,先開啟Excel的檔案,再開啟執行自己的專案,當改變檔案中內容時,Winform的表單內容也即時更新
文章標籤
全站熱搜
留言列表