Using the work queue should always be the right way, even for a single case; this allows you to know what cases were completed and which ones not. This way you won't have to process all the data again if something goes wrong during runtime.
I haven't had to read that many rows in a collection, but if the memory is an issue a possible solution could be:
Open the workbook and get number of rows
Call the ""Get Worksheet Range As Collection"" to read the data by chunks, for example row 1 to 10,000 - on the next loop get 10,001 to 20,000 and so on. This way your collection will never be larger than 10,000 rows.
Create one Queue item per row in that collection
Repeat steps 2 and 3 until you process the 400k records
Make sure to disable the logging, otherwise you might end up with a massive log file and potentially crash Blue Prism.