views:

594

answers:

1

Good Afternoon,

A customer has provided me with a spreadsheet file his team uses to provide quotes for a product. The spreadsheet has extensive data in underlying sheets and calls those sheets as part of the numerous formulas on the quote sheet.

I've been tasked with web-enabling this tool such that the quotes can be generated on the client's website, hosted in a shared environment, running ASP.net 3.5 webforms. The quote web form will be in a Restricted portion of the website controlled by ASP.net membership API.

Are there 3rd party tools that do well with this sort of thing?

Thanks, Sid

+4  A: 

I've once been asked to do something similar. I refused. Someone else tried this and it became a complete failure. That's because your design is based upon the structure of a spreadsheet.

When I was called back to help on this project, I kicked the previous code into a large bin, which will stay closed until Hell freezes over! I then started analysing the Excel sheets, extracting the business logic and writing them down as documentation. This allowed me to create a good design to set up the first version of a new project, which wasn't based upon the Excel sheet, just on the business logic in the sheet.

Don't be tempted to fall into this trap! It sounds too easy but in reality, it's way too expensive as a solution because of all the problems that you will encounter!


If your customer really needs to have something to use real fast, start with .NET (VS2008 with latest service packs or better) and SQL Server. First create a simple database structure to contain the quotes. Add as many relations as needed. Then, using VS2008, create a new project based on the "Dynamic Data Entities Web Application" which will use the Entity Framework to connect to the database. Make sure the entity framework is connected to your database and all data is provided to it. (By adding an "ADO.NET Entity Data Model" to it.) Compile it, put it on the web server and version 0.1 should be ready. It will allow your customer to continue data entry, although in a bit primitive way, while maintaining the data integrity of it all. It still isn't good enough to expose to the outside World but it makes it easier to get rid of the data part of the Excel spreadsheet. (And technically, it should be possible to also add a RESTful service around the entity model within an hour to allow Excel to read data from a web service instead.)

When this start page has been created, your customer can get used to data entry through web pages while you have some time to analyse their spreadsheet a bit more to optimize the data model and to create custom logic and better pages for data entry.

Basically, this is the approach that I used. My customer had data in Excel sheets which was exported to an Access database which was used as read-only data for users of his application. He used Excel to keep the data up-to-date. But when multiple users started to maintain the data in the same Excel sheet, he got in big trouble, losing the integrity and data of the Excel sheets multiple times.

I first created a simple data model around the Excel data with the Entity framework/DDS for easier data entry and then I could optimize the database structure while the customer just continued to modify the data. Occasionally, I'd update the database structure, adding more relations and restructuring the data to be more optimized and at one point I added the RESTful service functionality so the customer could get the data as XML through a simple web request. Now the customer has completely forgotten about the Excel sheet and is using the website full-time. He has accepted the fact that turning it into some fancy website will cost a lot of time but the current situation is quite acceptable.

This approach succeeded where previous attempts failed simply because I only focused on the data, nothing more. Now I can improve it all using little steps. But step one: analyze the Excel sheet and dump the data in a database. The Entity framework will allow you to quickly build simple sites around this without much effort.

Workshop Alex
I am inclined to agree. Use your original spreadsheet as the basis for a new software design.
Robert Harvey
Thanks so much!!! I really appreciate your time and willingness to share how you would approach this issue. Thanks again:)
SidC
You're welcome! Glad to be helpful. :-)
Workshop Alex