fiz um rápido teste aqui, e verifiquei q passando 0 para uma célula de formato data no excel ele gera uma outra data diferente de 30/12/1899. ou seja, o valor da data inválida deve estar sendo montado em uma variavel e já esta sendo passado ao excel errado.