2012-11-16 35 views
2

虽然与Excel Interop工作,我想出了一个问题。在保存之前使用以下代码自动调整工作表的列。的Microsoft Excel互操作检查是否Excel工作表支持自动调整

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

它对我来说很好。然后我遇到了一些特定的Excel工作表的问题。如果我自动填写它说AutoFit method of Range class failed

Excel工作表造成的问题,请here

现在我想知道的是,是否有一些方法来检查,如果一个Excel工作表支持自动调整与否。有点像

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

任何帮助,将不胜感激。

+1

根据http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.autofit(v=office.11​​).aspx#Y0它会产生一个错误,如果它不是行或行的范围,或列或列的范围。有什么不同的“特定的Excel工作表”会导致这种情况? – SpaceBison

+0

其实,如果你打开这个Excel文档Microsoft Excel中,你会发现,你甚至不能可用于输入自动调整功能的细胞。它的一些固定类型的Excel表。 –

+1

您确定这不是因为您的工作表受到保护吗?您无法调整受保护工作表上的栏的大小。一旦我没有保护你的示例Excel工作表,我可以自动调整所有的列。 –

回答

1

如果没有sheet.CanAutoFit(),那么你总是可以做到这一点:

try { 
    curSheet.UsedRange.EntireColumn.AutoFit(); 
} catch (TheSpecificExcelException exc) 
{ ... } 
+2

但是,这不会是一个很好的事情,为您创造知道会不会想些例外。必须有一些适当的解决方案。此外,如果Mircosoft Excel知道它不能自动安装,那么一定有办法做到这一点。 –

+1

世界并不完美 –

1

问题被片保护。并处理我使用trycatch异常处理。所以它已经解决了。

相关问题