It depends on the number of work items you are going to report on and on how you want to design your automation. If the number of work items is small, it may make sense to write each item to Excel and save the file as you process each case. However, if the number of cases is large, you should write them all to Excel in one go after the main process is finished. I work with very large data sets, so this latter design is how I normally do it. In my main process, after a case is dispositioned (marked as Completed or as Exception) I add the case to a separate Work Queue called Report Queue. Then, when the main process is finished, I create a separate Write Report process that gets each item from the Report Queue, writes it to Excel, and marks it as Complete. The basic design is Get Next Item, write it to Excel, and repeat until there are no more items in the queue. Then, I save the Excel file at the end. I find this method is most efficient, especially since I usually work with a very large number of work items.
Unfortunately, I learned this the hard way since when I was a new developer, I designed a process that wrote each individual work item to the Excel file, and saved the file every time. (I was required to save the file after each case in order to minimize the risk of data loss in case the network went down while the Excel file was saving, thereby causing loss of the Excel file.) Since every save is done on a slightly larger file (i.e., larger by one record), it takes longer to save the Excel each time and this small increase in time adds up as the number of records written increases. This particular process took more than 1 entire day to run, primarily due to the excessive time it took to save the Excel each time. I eventually changed the design to add a report queue like I described above and writing the Excel file only once at the end of the process, and I was able to shave 20+ hours off the run time. I have always used a separate report queue since.
Hope this helps.