1

我有一个 C# feeder,它生成一些数据并将它们发送到某种前端。有没有直接的方法可以让我使用 excel microsoft office 接收这些数据?PS我不想编写接收数据然后将其写入excel表的代码。我希望能够直接从 excel 本身获取数据,作为我的 C# 后端的前端。这有可能吗?

4

1 回答 1

1

我做了一个快速的博士。Google 搜索Excel 中的 WebService 调用,发现以下文章

Option Explicit
' Excel VBA Function wrapper to call currency conversion Web Service on the web!
Public Function ccyConvert(rsCurrIn As String, rsCurrOut As String, 
                           ByVal vfAmtIn As Single) As Single
    Dim objSClient As MSSOAPLib30.SoapClient30      
   ' Remove the 30 if using an earlier version of SOAP
    Dim fResult As Single

    ' Point the SOAP API to the web service that we want to call...
    Set objSClient = New SoapClient30
    Call objSClient.mssoapinit(
              par_WSDLFile:="http://webcontinuum.net/webservices/ccydemo.wsdl") 

    ' Call the web service 
    fResult = objSClient.calcExcRate(rsCurrIn, rsCurrOut, vfAmtIn)
    Set objSClient = Nothing

    ccyConvert = fResult 
End Function

由于Excel可以访问数据(来自不同的数据源) ,因此创建 ac# WebService传递请求的数据可能是一个合适的解决方案。

请注意,这不是我的代码- 它只是上述文章的副本 - 所以归功于作者!

我只是想到了另一种解决方案。您可以考虑制作自己的C# com 组件。在任何excel VBA 代码中,您现在可以调用程序集中的任何方法。再次先生。谷歌找到了一篇描述如何实现这一点的文章!

自己的 com 组件的c# 代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace DotNetLibrary
{
  [ClassInterface(ClassInterfaceType.AutoDual)]
  public class DotNetClass
  {
    public DotNetClass()
    {
    }
    public string DotNetMethod(string input)
    {
        return "Hello " + input;
    }
  }
}

excel宏中的VBA代码

Private Sub TestDotNetCall()
    Dim testClass As New DotNetClass
    ' or do whatever you want with return value
    MsgBox testClass.DotNetMethod(“World”)
End Sub
于 2012-06-21T07:42:24.387 回答