Cached Variables in VSTO Office 2010

After browsing the internet, I found the following posts (below) that are very similar to my problem. However, after trying the solutions, I was still stuck.

VSTO Frustration

Setting cached variables in VSTO 3.0

Basically, I want to fill in some data in an Excel file on a web server before sending it to a client.

Here is my code in the book:

namespace Inno.Data.Excel
{
  public partial class ThisWorkbook    
  {     
     [Cached]        
     public DataSet Config = new DataSet();     

     private void ThisWorkbook_Startup(object sender, System.EventArgs e)
     {
         //InitializeCachedData();          
         var baseUrl = (string)Config.Tables["Config"].Rows[0].ItemArray[0];            
         var streamIds = (string)Config.Tables["Config"].Rows[0].ItemArray[1];

         MessageBox.Show(baseUrl + " " + streamIds);
     }
  }
}

but on the server side I have the following:

let rootUrl = Uri(x.Request.Url.GetLeftPart(UriPartial.Authority))

let setUpData (report : Report) (sd : ServerDocument) =
    let url = rootUrl.AbsoluteUri
    let streamIds = String.Join(",", report.series |> Seq.map(fun s -> s.id))

    let dt = new System.Data.DataTable("Config")
    dt.Columns.Add("BaseUrl", typeof<String>) |> ignore
    dt.Columns.Add("StreamIds", typeof<String>) |> ignore
    dt.Rows.Add([|box url; box streamIds|]) |> ignore
    dt.AcceptChanges()

    let cache = sd.CachedData.HostItems.["Inno.Data.Excel.ThisWorkbook"]
    let urlItem = cache.CachedData.["Config"]
    urlItem.SerializeDataInstance(dt)
    sd.Save()
    sd.Close()

let initialiseDocument (report : Report) (path : string) =
    let fileName = report.name.Replace(" ", "_") + ".xlsx"
    let sd = (new ServerDocument(path)) 
    sd |> setUpData report 
    fileName

let docPath = x.Request.MapPath(Path.Combine(liveReportPath, "Inno.Data.Excel.xlsx"))
let fileName = initialiseDocument report docPath
x.File(File.OpenRead(docPath), "application/vnd.ms-excel", fileName) :> ActionResult

However, when I open the file after downloading it, I get the following error:

Microsoft.VisualStudio.Tools.Applications.Runtime.CannotFindObjectToFillException:    Cannot find any public instance member with ID Config in object Inno.Data.Excel.ThisWorkbook.

Things I tried: -

  • Using a simple string, not a DataSet
  • Call StartCaching("Config")
  • Manipulating ServerDocumentin memory with file overloadbyte[]
  • Copying an Excel source file and working with a copy

. , , , , VSTO 3.0 .

.

+3

All Articles