簡體   English   中英

使用DDE將數據發送到Excel文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM