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

Докато работя с Excel Interop, изникнах проблем. Преди да запазя I Autofit колони на работен лист със следния код.

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