【问题标题】:c#: Excel obj count is 0 while accessing through GetActiveObject("Excel.Application")c#:通过GetActiveObject(“Excel.Application”)访问时Excel obj计数为0
【发布时间】:2017-03-09 20:35:17
【问题描述】:

excel object returns count zero请参考截图。

我需要访问通过类似于 sharepoint 的应用程序打开的文件类型 PPT、Excel、Word 的对象。

当我尝试获取打开的 excel 文件的计数时,我总是得到计数为 0。我已经搜索过是否可以得到帮助,看到了这个 Accessing an open Excel Workbook in C#,但虽然实施了解决方案,但它返回 0。

Microsoft.Office.Interop.Excel.Application xlObj =
(Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
 while (xlObj.Windows.Count == 0) // This line returns the count as 0

【问题讨论】:

  • "通过类似于 sharepoint 的应用程序打开" > 文件是在 Web 浏览器中打开/查看的,还是正在下载然后在 Microsoft Office 应用程序中打开的文件?
  • 文件已下载并在ms office中打开。
  • 任何想法为什么会发生这种情况?它适用于 Ppt 和 word 对象。另外一个观察,如果我想专注于 word 和 ppt 应用程序,我可以使用 wordObj.Activate() 和 pptObj.Activate() 为什么我不能为 excel 做? xlObj.Activate() 不可用
  • Activate() 方法仅适用于 Excel 中的工作簿,而不适用于整个应用程序。您是否尝试过检查是否有任何打开的工作簿而不是检查窗口计数(即检查xlObj.Workbooks.Count)?如果计数大于 0,那么您应该能够通过调用 xlObj.Workbooks[1].Activate() 来激活第一个工作簿
  • 感谢低音推子。我重新启动系统excel计数现在工作正常。不知道是什么问题。我已经释放了 COM 对象,处理了 GC,无论如何,当它不工作时我的运气不好。关于激活 excel 文件,xlObj.Workbooks[1].Activate() 工作正常。非常感谢。

标签: c# excel


【解决方案1】:
        Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\nagendra.k.kumar\Desktop\Talent Review - Nagendra Kumar.xlsx");
        Microsoft.Office.Interop.Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
        Microsoft.Office.Interop.Excel.Range xlRange = lWorksheet.UsedRange;
        MessageBox.Show(xlRange.Rows.Count.ToString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多