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的表單內容也即時更新
文章標籤
全站熱搜

請問這改寫成.NET應該怎麼做?