我正在尝试使用 Microsoft Office Excel 进行 COM 自动化,它必须与尽可能多的系统兼容。这是一个相对基本的程序,它获取一个文本文件并使用它来填充大部分预制的 Excel 表单 (.xlsx),然后用户可以在该表单上签名并保存。
我只有 Visual Studio 2008,所以我没有使用“嵌入互操作”选项,而是使用后期绑定。它使用 C# 编程并使用 .Net Framework 3.5。
测试系统运行 Windows XP SP3 和 Office XP(我们将支持的最旧版本),并安装了 Office 2007 兼容包和 .Net 3.5。我可以在文件浏览器中正常打开 .xlsx 文件,但是当尝试通过我的程序打开它时,它会给出一个错误,提示“文件的格式无法识别”等。
我认为问题在于打开工作簿,这是我的代码:
//Add a new workbook.
Parameters = new Object[15];
Parameters[0] = openFileDialog1.FileName;
for (int i = 1; i < 15; i++) {
if(i == 2)
Parameters[2] = true; //make file read only
else
Parameters[i] = Missing.Value; //default on the rest
}
objBook_Late = objBooks_Late.GetType().InvokeMember("Open",
BindingFlags.InvokeMethod, null, objBooks_Late, Parameters);
到目前为止,我已经在 Excel 2010 和 2007 上对此进行了测试,它们都运行良好,所以我不完全确定为什么这会导致 WinXP 出现错误。如果可以的话,我会使用较旧的 .xls 文件,但不幸的是,这不取决于我。
任何帮助将不胜感激,谢谢!