我无法使用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();
}
程序失败,因为第二个工作簿destworkBook
是null
,即open
方法无法成功创建工作簿对象。文件本身也不是问题;如果我更改顺序并先打开destworkBook
,则srcworkBook
会变成null
。
我在做什么错了?
答案 0 :(得分:1)
Aaaargh真是愚蠢。我遇到的问题是我试图在不同的文件夹中打开两个工作簿,但它们具有相同的名称。如果您尝试手动执行此操作,Excel会给您一个错误,指出它无法同时打开两个具有相同名称的工作簿,但是在C#中,您将获得一个null
值而不是一个异常。将第二个工作簿重命名为稍有不同的名称后,便能够在同一Excel应用程序对象中打开两个工作簿。