Could you maybe take a look at the below post. It has a Linq Implementation on Segmenting the Datatable based on Segment Size (For your case 30000). You will get the Output as list of Datatables each with the 30000 rows.
Also, Once you have read the Excel sheet, you can keep the remaining activities outside the Excel application Scope, Just to keep the Excel scope related activities separate.
Let us know if you were able to understand and implement the approach.