打开Excel 2007文件时出错
问题描述:
我对OpenFileDialog
类不是很熟悉,但是我正在使用它来选择文件并在C#winform应用程序中打开文件。这是我的语法,当它打开时它有正确的文件名,但它会抛出一个调试错误System.Runtime.InteropServices.COMException: The server threw an exception
RPC信息:Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT)
并且如果内存服务,那是你可以得到的最通用的消息之一。从句法上来说,这个设置是否正确?或者我怎样才能实现我的.xlsx文件打开?打开Excel 2007文件时出错
OpenFileDialog fd = new OpenFileDialog();
fd.Title = "Select The File To Open";
fd.Filter = "Excel Files|*.xlsx";
fd.InitialDirectory = @"C:\";
if (fd.ShowDialog() == DialogResult.OK)
{
Excel.Application xlsApp = new Excel.Application();
try
{
Workbook wb = xlsApp.Workbooks.Open(fd.FileName);
MessageBox.Show("The file was opened");
}
catch (Exception grrr) { MessageBox.Show(grrr.ToString()); }
}
答
检查您的参考。例如,如果在运行此项目的计算机上将Excel 2000设置为默认值,但为Excel 2007设置了引用(将显示为Excel 12.0对象库),则会收到上述HRESULT错误。
检查IMO的最快方法是查看您的解决方案资源管理器,然后单击参考旁边的下拉箭头,然后选择Microsoft.Office.Interop.Excel并查看说明中列出的版本。
我相信'COMException'通常会给出一个HRESULT错误代码,可以帮助您解读出错的部分。 – Phylogenesis 2015-03-25 01:19:13
@Phylogenesis请参阅编辑。 – user2676140 2015-03-25 01:25:47
你真的*需要*与Excel交互吗?如果您只是想从Excel文件导入数据,那么有更好的方法来做到这一点。使用不带外部依赖项的本机库,如Open XML SDK,EPPlus或NPOI(EPPlus是我的选择)。重量更轻,速度更快,没有依赖性,至少最后两个更容易处理。 – mason 2015-03-25 12:42:57