• +1 for SSIS, and given what you said

    If something already exists it should leave it, unless it's edited in the excel sheet

    and so on and so on

    SSIS has a Merge transform, from here you can pass this on to a conditional split to see if you want to pass the columns though to the destination , to a update/lookup, or not pass them , etc... Or it may be easier if all your data is on one place/database to use a execute sql task and use the Merge function inside it. (Though, I came upon some page describing buginess with the merge funciton , just an fyi... http://www.mssqltips.com/sqlservertip/3074/use-caution-with-sql-servers-merge-statement).

    ----------------------------------------------------