You will want to use the Office Open XML SDK (or a library which implements this SDK for you) in either scenario. I recommend getting familiar with the file formats first, and the Open XML Developer site can help. This can often be a non-trivial task, but you can make your life easier using XLINQ if your data is truly that simple.
List<Person> people = new List<Person>(sourceData);
XNamespace ns = @"http://schemas.openxmlformats.org/spreadsheetml/2006/main";
Func<Person, XElement> nameColumn =
(person) => new XElement(ns + "c", new XAttribute("r", "A1"),
new XElement(ns + "v", person.Name);
Func<Person, XElement> ageColumn =
(person) => new XElement(ns + "c", new XAttribute("r", "A2"),
new XElement(ns + "v", person.Age.ToString());
var worksheet = new XDocument(
new XElement(ns + "worksheet",
new XElement(ns + "sheetData",
people.Select((pp,rr) =>
new XElement(ns + "row",
new XAttribute("r", (rr + 1).ToString()),
nameColumn(pp),
ageColumn(pp))
).ToArray()
)
)
);