Category Archives: C#

Using the Ribbon Control in MS Office 2007/2010 with C#

One of our clients has a complex Excel 2007 spreadsheet they need to do some automation with. The current solution involves lots of manual steps to create charts in a PowerPoint presentation. To this end I started researching how to add items to the ribbon bar so they could automate tasks with Macros.

However, when I started looking into it more deeply I discovered you could easily create plugins using Visual Studio and manipulate spreadsheets and most of the Office 2007/2010 suite using the Office.Interop DLL.

These are the helpful resources I used to get some development underway:

I did have some trouble with Windows 7 UAC because everytime you build your application, it reinstalls the plugin. There are some helpful posts about fixing this.

Next thing for me to learn and post about is doing something useful in C# to change the Excel Data…

Advertisements

Learning ASP.NET MVC

I’ve found there is A LOT of information on the net about learning the MVC framework. I thought it might be helpful for others to read about my experiences while I’m learning.

So, my starting point: http://asp.net/MVC Scott Hanselman has a really fun and interesting presentation regarding a OSS website he’s developed called Nerddinner.com

I’ve had some experience with TDD and ASP.NET webforms from a previous project I was working on and we were using a Model-View-Presenter pattern which as far as I can see is pretty much the same as MVC.

The View – This is a dumb portal to communicate information to the user

The Controller – This communicates information to the view and translates it to and from the Model. It is generally unit tested and could communicate with the view via a View Model.

The Model – Contains business logic, stores and retrieves data in a database and is really the concrete information regarding your software project. This is also the data that you may need to mock to check your controller handles user input correctly.

More buzz words I needed to look up/I feel are never explained particularly well:

  • View Engine – A method of displaying information to the user. See wikipedia for a better description
  • Routing policy – Rather than using Viewstate, URLs can tell the controller what to display
  • Dependency Injection – DI allows you to inject objects into a class, instead of relying on the class to create the object itself. (Microsoft)
  • IOC
    • “Inversion of Control – IOC specifies that if an object requires another object, the first objects should get the second object from an outside source such as a configuration file. This makes testing easier.” (Microsoft)
    • Car requires seats. Car should get seats from factory (not the driver/user).
  • URLRoutingModule – Guesses the page you are trying to reach. No match means it falls back to the default IIS settings. In MVC a URL does not equal a page. Browser requests are mapped to controller actions.
  • MvcHandler – Selects the controller that will handle the request
  • JSON – JavaScript Object Notation

The Controllers Execute method, invokes an action method associated with the controller, which in turn, receives user input, prepares a response and returns the requested type. The built in result types are:

  • ViewResult (which renders a view and is the most-often used result type),
  • RedirectToRouteResult,
  • RedirectResult,
  • ContentResult,
  • JsonResult, and
  • EmptyResult

ASP.NET Routing

An ASP.NET Web Forms application is content-centric. An ASP.NET MVC application, in contrast, is application logic centric. It uses a route table to work out which controller to use and associated input data. What I’m not sure about yet is how to save data back to the Model through the view.

Using JSON – Another post for that I think!

Using Meta Data – data that describes data!

References

Microsoft. (n.d.). MVC Overview. Retrieved from http://asp.net: http://www.asp.net/learn/mvc/tutorial-01-cs.aspx

Hello world!

Surely every blog starts with this! Why should mine be different?

I’m planning on writing a few posts on various technologies. You can get the theme of this blog from the About page.