Напишу как работает мой магазин. Единственное отличие - загрузка идет не через ексель, а .xml. Но думаю проблемы переделать нет.
Написан парсер, который разбирает приходящие прайсы, в базе данных создано еще одно поле "Поставщик". В него заносится название файла к примеру "Поставщик 1". Естественно все товары имеют это ключевое поле, поэтому проблем с обновлением остатков и цен нет, просто пишется алгоритм, который вытягивает сначала ключевое поле, потом к нему если существует артикул добавляет артикул, если нет, то имя ну и тд и сравнивает с товарами в базе - нашелся - обновили присутствующие позиции, нет? - добавили. В итоге ошибочных обновлений нет, ведь в любом случае хоть одно поле, но будет.
Как-то так. Может неправильно понял вопрос ТС.