How do i check if a sheet exists in a excel using interop. I tried the following but it throws an COMException if not there.. Is there a better way of finding out than actually looking at the exception
Worksheet sheet = null;
Sheets worksheets = some;
sheet = (Worksheet)worksheets.get_Item("sheetName");
if(sheet!=null)
{
//do something
}
Edit:
Thanks for the input guys.
i wrote a function
private Dictionary<string, Worksheet> GetSheetsMap(Sheets worksheets)
{
if (worksheets == null)
throw new ArgumentNullException("worksheets");
Dictionary<string, Worksheet> map = new Dictionary<string, Worksheet>(StringComparer.CurrentCultureIgnoreCase);
foreach (Worksheet s in worksheets)
{
map.Add(s.Name, s);
}
return map;
}
And i use it as below
Dictionary<string, Worksheet> sheetMap = GetSheetsMap(worksheets);
Worksheet sheet = null;
if (sheetMap.TryGetValue(ExtendedTemplateManager.BasicUserTemplate, out sheet))
{
//found it.
}
else
{
// not
}
Do you have a Workbook object? If so, you can iterate over the Workbook.Sheets array and check the Name property of each Sheet.
foreach (Sheet sheet in workbook.Sheets)
{
if (sheet.Name.equals("sheetName"))
{
//do something
}
}
First consider if an exception isn't actually appropriate. You expect a sheet with a certain name to be there. If it isn't, can you still meaningful continue running your program?
If you can, you can avoid the exception by iterating the sheets collection and look for a match on the Name property.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With