Previous versions of Microsoft Office Applications were able to access web services using Microsoft Office Web Service Toolkit. But the Web Services Toolkit is not a Microsoft supported product.
Microsoft Visual Studio 2008 / 2010 provides support for creating Office 2007 / 2010 application.
And easily make calls to Web Services.
Using this article you can learn how to consume a web service and create an add-on for Excel.
Step 1: Creating an Excel 2010 workbook solution in Visual Studio 2010.
![CnsWbSrvc1.jpg]()
Step 2: Open Sheet1.cs for viewing the code:
![CnsWbSrvc2.jpg]()
Step 3: Add a Service reference:
![CnsWbSrvc3.jpg]()
![CnsWbSrvc4.jpg]()
public static void BindWorkSheet()
{
    List<ItemList> itemlist = new List<ItemList>();
    ItemList_Filter[] filters = null;
    ItemList_Service service = new ItemList_Service();
    ICredentials credntial = new System.Net.NetworkCredential(ConfigurationSettings.AppSettings["username"].ToString(), ConfigurationSettings.AppSettings["password"].ToString(), ConfigurationSettings.AppSettings["domain"].ToString());
    service.Credentials = credntial;
    itemlist = service.ReadMultiple(filters, string.Empty, 0).ToList();
    if (itemlist != null)
    {
        if (itemlist.Count() > 0)
        {                  
            Excel.Worksheet sheet = Globals.ThisWorkbook.Worksheets[1];                                
            sheet.ClearArrows();
            General general = new General();
            DataTable dt = general.ToDataTable(itemlist);
            if (dt != null)
            {
                if (dt.Rows.Count > 0)
                {
                    for (int j = 1; j <= dt.Columns.Count; j++)
                    {
                        if (dt.Columns[j - 1].ColumnName != null)
                        {
                            ((Microsoft.Office.Interop.Excel.Range)sheet.Cells[1, j]).Value2 = 
                                dt.Columns[j - 1].ColumnName.ToString();
                            ((Microsoft.Office.Interop.Excel.Range)sheet.Cells[1, j]).Font.Bold
                                 = "true";
                            ((Microsoft.Office.Interop.Excel.Range)sheet.Cells[1, j]).Font.Color
                                 = System.Drawing.Color.Black;
                        }
                    }
                    for (int i = 1; i <= dt.Rows.Count; i++)
                    {
                        for (int j = 1; j <= dt.Columns.Count; j++)
                        {
                            if (dt.Rows[i - 1][j - 1] != null)
                            {
                                ((Microsoft.Office.Interop.Excel.Range)sheet.Cells[i+1, j]).Value2 = dt.Rows[i - 1][j - 1].ToString();                                       
                                ((Microsoft.Office.Interop.Excel.Range)sheet.Cells[i+1, j]).Font.Color = System.Drawing.Color.Black;
                            } 
                        }
                    }
                }
            } 
        }
    }
}
Step 4: Build and run the application.
![CnsWbSrvc5.jpg]()
Step 5: Create the Refresh Add-On so the user can get fresh data every time.
Add a Ribbon control to the project:
![CnsWbSrvc6.jpg]()
![CnsWbSrvc7.jpg]()
On the refresh button click, rebind the Excel file:
private void btnrefresh_Click(object sender, RibbonControlEventArgs e)
{
    ExcelDynamicNAV.Sheet1.BindWorkSheet();
}
Step 6: Your app.setting file is like:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        </sectionGroup>
    </configSections>
    <system.serviceModel>
        <bindings />
        <client />
    </system.serviceModel>
    <applicationSettings>
        <ExcelDynamicNAV.Properties.Settings>
            <setting name="ExcelDynamicNAV_ItemListRef_ItemList_Service"
                serializeAs="String">
                <value>Web service URL</value>
            </setting>
        </ExcelDynamicNAV.Properties.Settings>     
    </applicationSettings>
  <appSettings>
    <!-- Web service Credentials -->
    <add key="username" value=""/>
    <add key="password" value=" "/>
    <add key="domain" value=" "/>
  </appSettings>
</configuration>