尝试打开第二个工作簿将返回null

时间:2019-05-20 16:26:35

标签: c# excel

我无法使用Excel interop打开第二个工作簿,也无法弄清原因。我看过多个教程/帮助线程/等。包括this SO answer,似乎我的逻辑应该起作用。这是一个测试例程,该例程只是尝试打开两个工作簿,访问每个工作簿中的工作表,然后关闭工作簿并退出excel:

using System;
using System.IO;
using System.Linq;
using Excel = Microsoft.Office.Interop.Excel;


    private static void TestOpen(string fromWorkbook, string toWorkbook, string fromSheet, string toSheet){
      Excel.Application excelApplication = new Excel.Application();
      Excel.Workbook srcworkBook = excelApplication.Workbooks.Open(fromWorkbook);
      Excel.Workbook destworkBook = excelApplication.Workbooks.Open(toWorkbook);
      Excel.Worksheet srcworkSheet = srcworkBook.Worksheets[fromSheet];
      Excel.Worksheet destworkSheet = destworkBook.Worksheets[toSheet];
      destworkBook.Close();
      srcworkBook.Close();
      excelApplication.Quit();
    }

程序失败,因为第二个工作簿destworkBooknull,即open方法无法成功创建工作簿对象。文件本身也不是问题;如果我更改顺序并先打开destworkBook,则srcworkBook会变成null

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

Aaaargh真是愚蠢。我遇到的问题是我试图在不同的文件夹中打开两个工作簿,但它们具有相同的名称。如果您尝试手动执行此操作,Excel会给您一个错误,指出它无法同时打开两个具有相同名称的工作簿,但是在C#中,您将获得一个null值而不是一个异常。将第二个工作簿重命名为稍有不同的名称后,便能够在同一Excel应用程序对象中打开两个工作簿。