0

我正在尝试使用 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 文件,但不幸的是,这不取决于我。

任何帮助将不胜感激,谢谢!

4

1 回答 1

0

好吧,经过更多研究,我终于修复了它。就像更新一样,即使您从 Excel 中执行文件 >> 打开,也会出现此错误,因此不是我的程序导致错误。

事实证明,我的测试台在安装 Office 2007 时遇到了一些遗留问题。它试图用 Office 2007 打开 .xlsx 文件,即使它不再安装。我进入控制面板>>文件夹选项>>文件类型并将.xlsx更改为Microsoft open XML转换器,它起作用了!

于 2013-06-25T13:53:52.690 回答