• SSIS does not like changing schema.

    You could stabilize the schema by using a second workbook that consists of a bunch of formulas that link it to the actual data you want to import. This would allow you to create some formulas that made sure empty columns were available even if users did not enter data. This is a pretty ugly solution though.

    Another option would be to use a script task in your data flow as a source. You could then use a bit of VB to extract the data from the workbook and add it to the output buffer. Again, this would allow you to just put NULL into the empty fields.

    Finally, if you wanted to expand on the last option you could write a custom data source component. It would be nearly the same code as the script task, but if you have to reuse it it would be a bit easier.