I would try the following approach which has worked well in the past.
- Allow the user to upload the file, put it somewhere on disk.
- Bind the results of the file to some grid (you can connect to Excel files using ODBC/OLE DB using traditional Connection/Command objects).
- Apply validation to the rows in the grid based on some set of business rules (excel data is normally quite dirty).
- Allow the user to update values in the grid and correct validation issues.
- When all the data is kosher and the user is happy with it perform a bulk insert in a transaction.
- If anything “bad” happens rollback and present some user feedback.