从Excel加载项进行ajax调用

时间:2015-05-26 21:46:50

标签: c# office-interop

是否可以从Excel 2013加载项进行ajax调用? 如果没有,那么创建可执行ajax调用的Excel任务窗格的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

是的,我确实完成了你想要做的事情。以下是一些提示

  1. excel表单操作不是线程安全的。确保在单击将执行http请求的按钮后禁用所有表单控件btnDownload.Enabled = false;并在执行完成后将其重命名。
  2. 使用`HttpClient`的实例来执行所有请求以获取json
  3. 从我的错误中学习。咬紧牙关并使用This json library来满足你所有的json需求。如果您需要任何动态的标准.net json提供程序是不够的。

我的代码在做事时通常采用以下格式。

// click handler for vsto excel add-in
private async void btnDownload_Click(object sender, RibbonControlEventArgs e)
{
    btnDownload.Enabled = false;
    using (var client = new HttpClient())
    {
        var resp = await client.GetAsync("http://somepath.com/data.json");
        var statusCode = (int) resp.StatusCode;
        if (statusCode == 200)
        {
            var json = await resp.Content.ReadAsStringAsync();
            var jobj = JObject.Parse(json); // from the library I mention.
            // lookup docs on how to manipulate jobj
            // then make calls to excel api to affect spreadsheet from the json.
        }
    }
    btnDownload.Enabled = true;
}