If a CSV file is "good enough" Excel for you - you can consider this in your server side code:
# pres download data -> initiate save csv
output$downloadData <- downloadHandler(
filename = "downloaded_data.csv",
content = function(file) write.csv2(times, file, row.names = F), # replace "times" with your data.frame to export'
contentType = "text/csv"
)
A side note: download buttons are known to behave strangely in Shiny preview (don't ask me why) so be sure to try troubleshoot it live.
Also consider between write.csv and write.csv2 depending on your formatting customs (coma for separator or decimal places and so on...)