Pieter,
As for getting the data from Excel, I think there's an easier way.
Are you managing large numbers of spreadsheets in batches, or are your users simply processing one spreadsheet at a time?
There are many ways to do this, but in the simple case where you are processing one spreadsheet, just try the following:
1) Create a page in your Windows or Web app with a text area and a buton.
2) Have the user open the spreadsheet, select all, copy the contents.
3) Paste into the text area in the app (Win or Web).
4) Click the button.
5) Your code does the following:
a) Trim the string (delete leading and trailing spaces).
b) Split by CRLF. This gives you the rows.
c) Get the first row. Split by tabs. This gives you the headers.
d) For each row after the first row, split by tabs to give you a list of values.
You can write some simple code to:
1) Check that all required columns are present, by comparing the list of column names to a list of required names.
2) Convert a column name to an index in the lists, so the user can move columns around and your code still works.
There are numerous ways to operate Excel, but if all you need is the text contents, better not to take on this level of complexity.
If your code needs to batch-process files, consider having the code that produces that files export them to txt or csv files, then read the files as text and process as above, still without using Excel.
Hope this makes sense and hope it helps.
Best regards,
Adam Leffert