Couple of things you could try..
Assuming it's the cell by cell copy that is taking the time you could drop the
worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
You could export it to a CSV first then SaveAs a .xlsx (check the formatting when you do this) - e.g. see this CodeProject article Exporting DataGridview To Excel
Not a method I would advocate but some people have some success using Copy/Paste e.g. see c# - How to export dataGridView data Instantly to Excel on button click?
] Please take care if you go down that route - make sure you are really pasting where you think you are pasting!
Another solution may be to drop the Interop and use Open XML instead - Welcome to the Open XML SDK 2.5 for Office | Microsoft Docs
Why not drop the intermediate datagridview altogether and export the data from SQL directly to Excel - e.g. Export a complete database to an Excel file
] (sorry it's in VB.NET but there are free conversion utilities on the internet)
Edit - if you want to compare timings have a look at this CP article How To: Measure execution time in C#