使用Office XP Interop打开.xlsx

时间:2013-06-24 21:31:40

标签: c# excel visual-studio ms-office

我正在尝试使用Microsoft Office Excel进行COM自动化,并且必须与尽可能多的系统兼容。这是一个相对基本的程序,它接受一个文本文件并使用它来填充大部分预制的Excel表单(.xlsx),然后用户可以注销并保存。

我只有Visual Studio 2008,所以我没有使用“嵌入互操作”选项,而是使用后期绑定。它是用C#编程的,并使用.Net Framework 3.5。

测试系统运行带有Office XP的Windows XP SP3(我们将支持的最旧版本),安装了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文件,但不幸的是,这不取决于我。

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,经过一些研究,我终于解决了这个问题。就像更新一样,即使你做了文件&gt;&gt;这个错误也会出现。从Excel中打开,因此不是我的程序导致错误。

事实证明,我的测试台在Office 2007安装中遇到了一些遗留问题。它试图用Office 2007打开.xlsx文件,即使它已经不再安装了。我进入控制面板&gt;&gt;文件夹选项&gt;&gt;文件类型和.xlsx更改为Microsoft开放XML转换器,它工作正常!