[英]Send data to Excel file using DDE
我知道DDE是過時的過時技術。 但是我正在創建一個C#Windows窗體應用程序,以將數據發送到Excel文件以進行研究。 我使用Win32 DDE函數,以下是到目前為止我嘗試過的功能。
Pinvoke簽名:
[DllImport("user32.dll", EntryPoint = "DdeInitialize")]
public static extern int DdeInitialize(out uint pidInst, IntPtr pfnCallback, IntPtr afCmd, IntPtr ulRes);
[DllImport("user32.dll", EntryPoint = "DdeConnect")]
private static extern IntPtr DdeConnect(uint idInst, IntPtr hszService, IntPtr hszTopic, IntPtr pCC);
[DllImport("user32.dll", EntryPoint = "DdeCreateStringHandle")]
private static extern IntPtr DdeCreateStringHandle(uint idInst, string psz, int iCodePage);
public Form1()
{
InitializeComponent();
Process application = new Process();
application.StartInfo.FileName = @"C:\Users\xxx\Desktop\DDE_Client.xlsx";
application.Start();
uint instId;
DdeInitialize(out instId, application.MainWindowHandle, IntPtr.Zero, IntPtr.Zero);
IntPtr sPtr = DdeCreateStringHandle(instId, "Excel", 1004);
IntPtr tPtr = DdeCreateStringHandle(instId, "Sheet1", 1004);
IntPtr channel = DdeConnect(instId, sPtr, tPtr, (IntPtr)null);
}
DdeConnect返回非零值,表示連接成功。
我的問題:
如何將字符串值發送到Excel工作表? 例如,我想將“名稱”發送到excel單元格A1。 我應該為任務使用哪個DDE函數?
您正在嘗試使用DDEML,確實很難找到合適的DDEML示例,因為實際上需要使用DDE的許多人都是直接使用原始Windows消息來完成的。 您必須先使用DdeClientTransaction然后使用相應的api(如DdeGetData或DdeAddData,DdeAccessData等)啟動客戶端事務,以訪問或獲取數據。 您可以找到有關DDEML在MS文檔更多的細節在這里 。
但是,由於您已經在使用C#,因此我強烈建議您僅在COM程序集部分中添加對Microsoft Excel或Office對象庫的引用並使用Microsoft.Office.Interop.Excel會更好。
using Microsoft.Office.Interop.Excel;
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.