【问题标题】:Microsoft Excel Interop Check whether excel sheet support AutofitMicrosoft Excel Interop 检查 excel sheet 是否支持 Autofit
【发布时间】:2012-11-05 05:07:57
【问题描述】:

在使用 Excel Interop 时,我遇到了一个问题。在保存之前,我使用以下代码自动调整工作表的列。

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

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

导致问题的 Excel 表可用here

现在我想知道的是,是否有某种方法可以检查 Excel 工作表是否支持 Autofit。类似的东西

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

任何帮助将不胜感激。

【问题讨论】:

  • 根据msdn.microsoft.com/en-us/library/…,如果它不是行或行范围,或者列或列范围,则会生成错误。导致这种情况的“特定 Excel 工作表”有什么不同吗?
  • 实际上,如果您在 Microsoft Excel 中打开此 Excel 文档,您会注意到,您甚至无法自动调整可用于输入的单元格。它是某种固定类型的 excel 表格。
  • 您确定不是因为您的工作表受到保护吗?您无法调整受保护工作表上的列大小。一旦我取消保护您的示例 Excel 工作表,我就能够自动调整所有列。
  • 是的,你是对的,它受到了保护......

标签: c# excel office-interop excel-interop office-automation


【解决方案1】:

如果没有sheet.CanAutoFit(),那么您可以随时这样做:

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

【讨论】:

  • 但这不是一件好事,为你知道不会起作用的东西创建异常。必须有一些适当的解决方案。而且,如果 Mircosoft Excel 知道它不能自动调整,那么一定有办法做到这一点。
【解决方案2】:

问题是工作表受到保护。为了处理这个问题,我使用了try catch 异常处理。所以已经解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多