Excel 与 C# 的并排比较 Excel Interop
Excel side by side comparison with C# Excel Interop
正在尝试使用 Excel 互操作与 C# 并排加载两个 Excel 工作簿。
我尝试了多种方法,但一直无法使它起作用。我已将其用于 Word 文档。
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.Visible = true;
Microsoft.Office.Interop.Excel.Workbook doc1 = ExcelApp.Workbooks.Open(fileToOpen.ToString());
Microsoft.Office.Interop.Excel.Workbook doc2 = ExcelApp.Workbooks.Open(file2ToOpen.ToString());
var result = doc1.Windows.CompareSideBySideWith(doc2.Windows[1].Caption);
两个工作簿都可以正常打开,但是我在 CompareSideBySideWith
方法上遇到以下异常:
'Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))'
我想我的参数字符串有误,但我不知道要为 WindowName 输入什么。我已经尝试了文档名称、sheet 名称、完整路径、带或不带扩展名 - 不确定还能尝试什么。
已更新 - 在 Slai 的协助下修改了工作代码:
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.Visible = true;
Microsoft.Office.Interop.Excel.Workbook doc1 = ExcelApp.Workbooks.Open(fileToOpen.ToString());
Microsoft.Office.Interop.Excel.Workbook doc2 = ExcelApp.Workbooks.Open(file2ToOpen.ToString());
doc1.Activate();
var result = ExcelApp.Windows.CompareSideBySideWith(doc2.Windows[1].Caption);
doc2.Windows
不在 doc1.Windows
集合中。可以用ExcelApp.Windows
代替:
var wb2 = ExcelApp.Workbooks.Open(file2ToOpen.ToString());
var wb1 = ExcelApp.Workbooks.Open(fileToOpen.ToString()); // wb1 is now active
bool result = ExcelApp.Windows.CompareSideBySideWith(wb2.Windows[1].Caption);
录制宏功能可用于比较生成的 VBA 代码以获得提示。
正在尝试使用 Excel 互操作与 C# 并排加载两个 Excel 工作簿。
我尝试了多种方法,但一直无法使它起作用。我已将其用于 Word 文档。
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.Visible = true;
Microsoft.Office.Interop.Excel.Workbook doc1 = ExcelApp.Workbooks.Open(fileToOpen.ToString());
Microsoft.Office.Interop.Excel.Workbook doc2 = ExcelApp.Workbooks.Open(file2ToOpen.ToString());
var result = doc1.Windows.CompareSideBySideWith(doc2.Windows[1].Caption);
两个工作簿都可以正常打开,但是我在 CompareSideBySideWith
方法上遇到以下异常:
'Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))'
我想我的参数字符串有误,但我不知道要为 WindowName 输入什么。我已经尝试了文档名称、sheet 名称、完整路径、带或不带扩展名 - 不确定还能尝试什么。
已更新 - 在 Slai 的协助下修改了工作代码:
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.Visible = true;
Microsoft.Office.Interop.Excel.Workbook doc1 = ExcelApp.Workbooks.Open(fileToOpen.ToString());
Microsoft.Office.Interop.Excel.Workbook doc2 = ExcelApp.Workbooks.Open(file2ToOpen.ToString());
doc1.Activate();
var result = ExcelApp.Windows.CompareSideBySideWith(doc2.Windows[1].Caption);
doc2.Windows
不在 doc1.Windows
集合中。可以用ExcelApp.Windows
代替:
var wb2 = ExcelApp.Workbooks.Open(file2ToOpen.ToString());
var wb1 = ExcelApp.Workbooks.Open(fileToOpen.ToString()); // wb1 is now active
bool result = ExcelApp.Windows.CompareSideBySideWith(wb2.Windows[1].Caption);
录制宏功能可用于比较生成的 VBA 代码以获得提示。