[英]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输入什么内容。 我已经尝试过文档名称,工作表名称,完整路径(带或不带扩展名)-不知道还要尝试什么。
更新-在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代码以获取提示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.