【发布时间】:2019-05-20 16:26:35
【问题描述】:
我无法使用 Excel 互操作打开第二个工作簿,并且无法弄清楚原因。我查看了多个教程/帮助线程/等。包括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。
我做错了什么?
【问题讨论】:
-
你试过 destworkBook.Activate(); ?
-
任务管理器中没有隐藏的 Excel 进程?
-
您使用的是什么版本的 Excel?如果您创建第二个 Excel 应用程序并尝试用它打开第二个文件,它可以工作吗?
-
@CynicalSection 使用两个
Excel.Applications 工作,但这会破坏程序的下一步,即从第一个工作簿中的工作表复制值到第二个工作簿中的工作表。我正在使用 Office 365 Excel(32 位)内部版本 9126。