So basically the best way I figured out to do this is using Microsoft.Office.Interop.Excel
object misValue = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook wb = excelApp.Workbooks.Open(Form1.excelPath, misValue, misValue, misValue,
misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[1];
//bring about print dialogue
bool userDidntCancel = excelApp.Dialogs[Microsoft.Office.Interop.Excel.XlBuiltInDialog.xlDialogPrint].Show(misValue,
misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue,
misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue,
misValue, misValue, misValue, misValue, misValue);
userDidntCancel brings about the print dialogue box and will return either true or false indicating whether the user pressed "PRINT" or "CANCEL" in the print dialog box which you can either use or not. I preferred this method because it allows the user to change printers and other properties and in my opinion is much better this way.
The only problem I found with this is that it prints which ever worksheet was last manually opened and saved. For example, in my case, my program is making some changes to a worksheet and then saving it. However, if the user manually opened the worksheet outside of the program and saved something on a different worksheet, my program will print that worksheet instead of the one it just edited. I can't seem to figure out how to fix this so if anyone has any suggestions, feel free to comment.