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