如何在VSTO应用程序中获取应用程序的URL

时间:2010-12-30 13:40:45

标签: c# excel vsto

我在C#中有一个web应用程序,我将调用VSTO 2003.它工作正常。我想要应用程序的url,以便我可以连接到Web服务。目前我已经在Sheet1_Startup方法中对webservice url进行了硬编码。但是url会被更改,所以我需要一种动态获取url的方法。 那是当我调用VSTO时,我希望将URL放在Excel中的一个单元格中 要么 是否有任何方法可以从我的Web应用程序将查询字符串传递给VSTO 2003应用程序。

请帮忙。

@ RobertG5

我在我的网络应用程序中编写了代码,如下所示

 System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection(
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"C:\Examples\VSTO2007\VSTO2007\VSTO2007.xlsx" +
    ";Extended Properties=Excel 8.0;");
            objConn.Open();


            System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand();
            objCmd.Connection = objConn;
            objCmd.CommandText = "Insert into [Sheet1$]" +
                " values ('Test')";
            objCmd.ExecuteNonQuery();


            // Close the connection.
            objConn.Close();

并且值确实已插入到vsto excel表中。 现在我该如何下载这个excel。

此致 cmrhema

1 个答案:

答案 0 :(得分:0)

预警,您不应该在Web服务器环境中通过VSTO访问Excel。您将遇到各种线程问题,主要是因为Excel是一个单线程应用程序,您在多线程环境中访问它。

但我仍然可以回答你的问题。如果要shell到Excel,可以将自己的自定义命令行参数传递给它。只要确保它不与任何Excel的命令行参数冲突(例如/ x:myargument)。您需要对其进行编码,使其不包含任何与参数协议冲突的特殊字符(例如base64)。加载加载项后,您可以检查参数并使用它执行您喜欢的操作(Environment.GetCommandLineArgs())。 或者您可以通过COM简单地实例化Excel并将值戳入单元格: http://support.microsoft.com/kb/302096