Hi!
We are using Excel rather heaviliy with our customers, and up till now we have used custom add-ins on the client, and automation on the server (yes, I know it's not supported).
But Aspose.Cells seems like a really good alternative. It definitely seems to fulfil our needs to generating Excel reports. However, we also use Excel for form-based input. And when I say forms, I mean really complex forms, with up to 60 000 cells sent between the client and the server (either being filled in manually, or calculated based on manually entered values).
To implement these forms, we have built a COM add-in using C#. There are definitely drawbacks with this approach, most importantly it requires all users to have the add-in installed on the client. Deploying updates to the add-in is not easy, many of our customers have complex deployment strategies...
The add-in uses a webservice to retrieve and send data to and from the client. This part of the functionalty could easily be replaced by Aspose.Cells. However, there are a more features that the add-in provides.
1. "Declarative forms"
Many of our forms are very "designed", with cells spread out here and there, over several sheets. Our approach is to have "two-way formulas" between these cells and (hidden) sheets (called data-sheet below) in the Excel document. In other words, a certain cell in a form is connected to a cell in a data-sheet, using a formula which the add-in provides.
When data is loaded to the Excel document, the webservice is called by the add-in, to retrieve the data. The data is loaded onto the data-sheet, which is a very rapid operation. The form-cell fetches the data (due to the formula) from the appropriate cell in the data-sheet.
Once all formulas have completed, all formulas are "inverted", simply meaning that a reference is created, form the data-sheet cell to the form cell.. This means that if the user now changes the value in the form cell, the corresponding cell in the data-sheet changes as well.
When the user is ready filling in the form, uploading is really simple - it simply retrieves the data from the data-sheet and sends it back to the server, using the webservice.
This approach makes it very easy for us to create complex forms, with thousands of cells, with good performance.
2. Syntax checking and value validation
One of the things that happens before data is sent back to the server is that the add-in checks that the entered data is correct. For instance, if the data in a cell is supposed to be a date-time value, but is not, the user will get notified about this. Since there is an association between the data-cell and the corresponding form-cell, the add-in will place the cursor in the form-cell and show a dialog describing the error. We also do more complex value validation, for instance checking that a numeric value does not have more than a certain number of decimals, a string does not exceed x characters, etc.
So, all in all, our add-in works well, but the deployment problem is a hard one, and our customer are hesitant to install things on the client machines. Therefore, a server-side solution would be much better.
I don't see any problem loading the data to and from the Excel document on the server-side. What is not so obvious is how "Declarative forms" and the syntax checking/value validation could be implemented on the server-side. If this could be solved, Aspose most certainly has a new customer!
Any comments are highly appreciated. Don't hesitate to ask for details, in case I've been vague (I probably have).
Thanks!
/Fredrik