Microsoft Excel Interop Проверьте, поддерживает ли лист Excel Autofit

Работая с Excel Interop, я столкнулся с проблемой. Перед сохранением я автоматически подбираю столбцы рабочего листа со следующим кодом.

Excel.Worksheet curSheet = (Excel.Worksheet)wsEnumerator.Current;
curSheet.UsedRange.EntireColumn.AutoFit();

И он отлично работает для меня. Затем я столкнулся с проблемой с некоторым конкретным листом Excel. Если я автоподгоню, он говорит AutoFit method of Range class failed.

Таблица Excel, вызывающая проблему, доступна здесь

Теперь я хочу знать, есть ли способ проверить, поддерживает ли лист Excel Autofit или нет. Что-то вроде

if(sheet.CanAutoFit())
    curSheet.UsedRange.EntireColumn.AutoFit();

Любая помощь будет оценена по достоинству.


person Mirza Bilal    schedule 16.11.2012    source источник
comment
Согласно msdn.microsoft.com/en-us/library/ выдает ошибку, если это не строка или диапазон строк, столбец или диапазон столбцов. Есть ли что-то другое в конкретном листе Excel, что может вызвать это?   -  person SpaceBison    schedule 16.11.2012
comment
На самом деле, если вы откроете этот документ Excel в Microsoft Excel, вы заметите, что вы даже не можете автоматически подогнать ячейки, которые доступны для ввода. Это какой-то фиксированный тип листа Excel.   -  person Mirza Bilal    schedule 16.11.2012
comment
Вы уверены, что это не потому, что ваш лист защищен? Вы не можете изменить размер столбцов на защищенном листе. Как только я снял защиту с вашего примера листа Excel, я смог автоматически подогнать все столбцы.   -  person Sid Holland    schedule 16.11.2012
comment
да, вы правы, он был защищен...   -  person Mirza Bilal    schedule 18.11.2012


Ответы (2)


Если нет sheet.CanAutoFit(), вы всегда можете сделать это:

try {
    curSheet.UsedRange.EntireColumn.AutoFit();
} catch (TheSpecificExcelException exc)
{ ... }
person Adrian Ciura    schedule 16.11.2012
comment
Но это было бы нехорошо, чтобы создать исключение для чего-то, что, как вы знаете, не сработает. Для этого должно быть какое-то правильное решение. И более того, если Mircosoft Excel знает, что не может выполнять автоподгонку, то должен быть какой-то способ сделать это. - person Mirza Bilal; 16.11.2012

Проблема заключалась в том, что лист был защищен. И чтобы справиться с этим, я использовал try catch обработку исключений. Итак, это было решено.

person Mirza Bilal    schedule 19.11.2012