Reports say a boat carrying at least 26 illegal immigrants sank in bad weather.
“There was a foul stench and I think those people had been dead for around six or seven days, maybe more,” the captain told national radio from the fishing boat.
According to the Spanish development ministry, the survivor and the seven corpses were transferred from the fishing boat to a Spanish rescue boat on Thursday and are to be taken to the Canary Islands.
More than 31,200 illegal immigrants arrived in the Canary Islands last year.
But maritime patrols off the west African coast by Frontex, an EU border agency, have led to a reduction, as an estimated 8,200 people reached the islands since the beginning of 2007.
An unknown number of migrants die each year trying to reach Europe in search of work.
In July, 50 people died after their boat capsized near the island of Tenerife.