【问题标题】:microsoft interop excel get_Rangemicrosoft interop excel get_Range
【发布时间】:2014-11-07 06:42:16
【问题描述】:

我开发了一种异步套接字方法,以便从其他应用程序接收文本并将其显示在 Excel 工作表中。 当 AsyncCallback 方法接收到信息时,它会尝试在 Excel 工作表中写入此消息。

一切正常,但如果在执行该方法的同时我正在编辑另一个单元格,则 ws.get_Range("A1").Value 不起作用。 我可以解决吗?是否有任何其他方法可以强制设置此消息而不是 Excel 的任何其他事件?

private void MessageCallBack(IAsyncResult aResult)
{
    try
    {
        byte[] receivedData = new byte[10];
        receivedData = (byte[])aResult.AsyncState;

        ASCIIEncoding aEncoding = new ASCIIEncoding();
        string receivedMessage = aEncoding.GetString(receivedData);

        Worksheet ws = SingletonExcel.getWorksheet();
        ws.get_Range("A1").Value = receivedMessage 
     }
     catch (Exception ex)
     {
         MessageBox.Show("the Cell A1 has not modifed: " + ex.Message);
     }
}

【问题讨论】:

  • 当您说“我正在编辑其他单元格”时,您的意思是光标在公式编辑栏中吗?如果是,则大多数 Excel 功能都被禁用。您可能会检测到这一点并等待 - 甚至可能退出编辑模式,但我怀疑当 Excel 处于该模式时您将能够做任何事情。

标签: c# excel interop


【解决方案1】:

您可以在设置值之前尝试激活工作表。我不太确定为什么,但如果您使用的对象不活动,Excel api 有时无法检索值。

ws.Activate()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多